Comment 1 for bug 1634515

Revision history for this message
Curtis Hovey (sinzui) wrote :

# Shared Model Config QA #

## Common steps ##

    $ juju add-cloud awstest ~/Sync/juju/2.0/dev-clouds.yaml
    $ juju bootstrap awstest reed/aws/us-west-1

## Testing modelconfig ##

Test that we get defaults from our configuration. Here we get the controller
level setting at the model level for no-proxy since this is our default model.
We get xenial as our default series as set in the controller config and
development is set to false which comes from the provider default config.

    $ juju model-config
    # output elided except some bits to show expected values
    Attribute From Value
    ...
    default-series controller xenial
    development default false
    enable-os-upgrade controller false
    ...
    no-proxy model https://local
    ...

Let's add a model in us-east-1 to make sure it correctly inherits.

    $ juju add-model east1 us-east-1
    $ juju model-config
    Attribute From Value
    ...
    default-series controller xenial
    development default false
    enable-os-upgrade controller false
    ...
    no-proxy region https://foo-east
    ...

Then we set some values and verify they are set and that the source of the
settings are correctly updated.

    $ juju model-config no-proxy=not-east development=true default-series=trusty
    $ juju model-config
    Attribute From Value
    ...
    default-series model trusty
    development model true
    enable-os-upgrade controller false
    firewall-mode default instance
    ...
    no-proxy model not-east
    ...

Now if we create a model in us-west-1 and ensure it has it's own settings.

    $ juju add-model west1 us-west-1
    $ juju model-config
    Attribute From Value
    ...
    default-series controller xenial
    development default false
    ...
    no-proxy region https://foo-west
    ...

Switching back to the east we can reset settings, and then verify we get our
original defaults back. Fo good measure we also set another setting here to
ensure that we can set and reset at the same time...

    $ juju switch east1
    $ juju model-config --reset development,default-series,no-proxy \
        apt-ftp-proxy=some-proxy
    $ juju model-config
    Attribute From Value
    ...
    apt-ftp-proxy model some-proxy
    ...
    default-series controller xenial
    development default false
    no-proxy region https://foo-east
    ...

## Model Defaults Testing ##

Let's kill the models and start over for model-defaults

    $ juju destroy-model east1 -y
    $ juju destroy-model west1 -y

Let's make sure the defaults have loaded correctly when we created our
controller.

    $ juju model-defaults
    Attribute Default Controller
    ...
    default-series xenial xenial
    ...
    enable-os-upgrade true false
    ...
    ftp-proxy "" -
    image-stream released -
    ...
    no-proxy "" https://local
      us-east-1 https://foo-east -
      us-west-1 https://foo-west -
    ...

Set another value in east and ask for it.

    $ juju model-defaults us-east-1 ftp-proxy=ftp://east
    $ juju model-defaults ftp-proxy
    Attribute Default Controller
    ftp-proxy "" -
      us-east-1 ftp://east -

Just ask for no-proxy which has settings in multiple regions.

    $ juju model-defaults no-proxy
    Attribute Default Controller
    no-proxy "" https://local
      us-east-1 https://foo-east -
      us-west-1 https://foo-west -

Ask for only settings specific to us-east-1.

    $ juju juju model-defaults us-east-1
    Attribute Default Controller
    ftp-proxy "" -
      us-east-1 ftp://east -
    no-proxy "" https://local
      us-east-1 https://foo-east -

Ask only for no-proxy in us-east-1.

    $ juju model-defaults us-east-1 no-proxy
    Attribute Default Controller
    no-proxy "" https://local
      us-east-1 https://foo-east -

Let's change some defaults and make sure they work.

    $ juju model-defaults enable-os-upgrade=true default-series=trusty
    $ juju model-defaults
    Attribute Default Controller
    ...
    default-series xenial trusty
    ...
    disable-network-management false -
    ...
    enable-os-upgrade true true
    ...

Let's change some region settings and reset ftp-proxy.

    $ juju model-defaults --reset ftp-proxy us-east-1 default-series=xenial enable-os-upgrade=false
    $ juju model-defaults default-series
    Attribute Default Controller
    default-series xenial trusty
      us-east-1 xenial -

    $ juju model-defaults enable-os-upgrade
    Attribute Default Controller
    enable-os-upgrade true true
      us-east-1 false -

We should get an error if we ask for a non existent setting.

    $ juju model-defaults us-east-1 ftp-proxy
    ERROR there are no default model values for "ftp-proxy" in region "us-east-1"

Let add-models and make sure they inherit.

West 1:

    $ juju add-model west1 us-west-1
    $ juju model-config
    Attribute From Value
    ...
    default-series controller trusty
    ...
    enable-os-upgrade default true
    ...
    no-proxy region https://foo-west
    ...

East 1

    $ juju add-model east1 us-east-1
    $ juju model-config
    Attribute From Value
    ...
    default-series region xenial
    ...
    enable-os-upgrade model false
    ...
    no-proxy region https://foo-east

West 2:

    $ juju add-model west2 us-west-2
    $ juju model-config
    Attribute From Value
    ...
    default-series controller trusty
    ...
    enable-os-upgrade default true
    ...
    no-proxy controller https://local

Let's kill those models:

    $ juju switch default
    for c in east1 west1 west2;do juju destroy-model -y $c;done

Reset some settings we set earlier.

    $ juju model-defaults --reset default-series,enable-os-upgrade,no-proxy
    Attribute Default Controller
    ...
    default-series xenial -
      us-east-1 xenial -
    ...
    enable-os-upgrade true -
      us-east-1 false -
    ...
    no-proxy "" -
      us-east-1 https://foo-east -
      us-west-1 https://foo-west -
    ...

Now reset no-proxy in us-west-1 and test asking for all region settings.

    $ juju model-defaults --reset no-proxy us-west-1
    $ juju model-defaults awstest/us-west-1
    ERROR there are no default model values in region "us-west-1"
    $ juju model-defaults awstest/us-east-1
    Attribute Default Controller
    default-series xenial -
      us-east-1 xenial -
    enable-os-upgrade true -
      us-east-1 false -
    no-proxy "" -
      us-east-1 https://foo-east -

And remove the remote machines...

    $ juju kill-controller reed/aws/us-west-1 -y