diff --git a/requirements.txt b/requirements.txt index 20f335d..f65abf7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,6 @@ # # Build requirements charm-tools>=2.4.4 +# importlib-resources 1.1.0 removed Python 3.5 support +importlib-resources<1.1.0 simplejson diff --git a/src/lib/charm/openstack/ovn_dedicated_chassis.py b/src/lib/charm/openstack/ovn_dedicated_chassis.py index 568946f..44f4d1f 100644 --- a/src/lib/charm/openstack/ovn_dedicated_chassis.py +++ b/src/lib/charm/openstack/ovn_dedicated_chassis.py @@ -14,8 +14,17 @@ import charms.ovn_charm -class OVNDedicatedChassisCharm(charms.ovn_charm.BaseOVNChassisCharm): +class TrainOVNChassisCharm(charms.ovn_charm.BaseTrainOVNChassisCharm): # OpenvSwitch and OVN is distributed as part of the Ubuntu Cloud Archive # Pockets get their name from OpenStack releases + source_config_key = 'source' release = 'train' name = 'ovn-dedicated-chassis' + + +class UssuriOVNChassisCharm(charms.ovn_charm.BaseUssuriOVNChassisCharm): + # OpenvSwitch and OVN is distributed as part of the Ubuntu Cloud Archive + # Pockets get their name from OpenStack releases + source_config_key = 'source' + release = 'ussuri' + name = 'ovn-dedicated-chassis' diff --git a/src/metadata.yaml b/src/metadata.yaml index 23b1832..ac5acd8 100644 --- a/src/metadata.yaml +++ b/src/metadata.yaml @@ -9,6 +9,7 @@ tags: series: - bionic - eoan + - focal subordinate: false extra-bindings: data: diff --git a/src/tests/bundles/bionic.yaml b/src/tests/bundles/bionic-train.yaml similarity index 100% rename from src/tests/bundles/bionic.yaml rename to src/tests/bundles/bionic-train.yaml diff --git a/src/tests/bundles/bionic-ussuri.yaml b/src/tests/bundles/bionic-ussuri.yaml new file mode 100644 index 0000000..4db5e95 --- /dev/null +++ b/src/tests/bundles/bionic-ussuri.yaml @@ -0,0 +1,27 @@ +series: bionic +relations: +- - vault:shared-db + - mysql:shared-db +- - ovn-central:certificates + - vault:certificates +- - ovn-dedicated-chassis:ovsdb + - ovn-central:ovsdb +- - ovn-dedicated-chassis:certificates + - vault:certificates +applications: + mysql: + charm: cs:~openstack-charmers-next/percona-cluster + num_units: 1 + vault: + charm: cs:~openstack-charmers-next/vault + num_units: 1 + ovn-central: + charm: cs:~openstack-charmers-next/ovn-central + num_units: 3 + options: + source: cloud:bionic-ussuri/proposed + ovn-dedicated-chassis: + charm: cs:~openstack-charmers-next/ovn-dedicated-chassis + num_units: 2 + options: + source: cloud:bionic-ussuri/proposed diff --git a/src/tests/bundles/eoan.yaml b/src/tests/bundles/eoan.yaml index 88908d0..5f0be91 100644 --- a/src/tests/bundles/eoan.yaml +++ b/src/tests/bundles/eoan.yaml @@ -1,7 +1,9 @@ series: eoan relations: +- - vault-mysql-router:db-router + - mysql-innodb-cluster:db-router - - vault:shared-db - - mysql:shared-db + - vault-mysql-router:shared-db - - ovn-central:certificates - vault:certificates - - ovn-dedicated-chassis:ovsdb @@ -9,9 +11,11 @@ relations: - - ovn-dedicated-chassis:certificates - vault:certificates applications: - mysql: - charm: cs:~openstack-charmers-next/percona-cluster - num_units: 1 + mysql-innodb-cluster: + charm: cs:~openstack-charmers-next/mysql-innodb-cluster + num_units: 3 + vault-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router vault: charm: cs:~openstack-charmers-next/vault num_units: 1 diff --git a/src/tests/bundles/focal.yaml b/src/tests/bundles/focal.yaml new file mode 100644 index 0000000..23c3f61 --- /dev/null +++ b/src/tests/bundles/focal.yaml @@ -0,0 +1,31 @@ +series: focal +relations: +- - vault-mysql-router:db-router + - mysql-innodb-cluster:db-router +- - vault:shared-db + - vault-mysql-router:shared-db +- - ovn-central:certificates + - vault:certificates +- - ovn-dedicated-chassis:ovsdb + - ovn-central:ovsdb +- - ovn-dedicated-chassis:certificates + - vault:certificates +applications: + mysql-innodb-cluster: + charm: cs:~openstack-charmers-next/mysql-innodb-cluster + num_units: 3 + vault-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + vault: + charm: cs:~openstack-charmers-next/vault + num_units: 1 + ovn-central: + charm: cs:~openstack-charmers-next/ovn-central + num_units: 3 + options: + source: distro + ovn-dedicated-chassis: + charm: cs:~openstack-charmers-next/ovn-dedicated-chassis + num_units: 2 + options: + source: distro diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index f901e53..d74dfd8 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -1,9 +1,12 @@ charm_name: ovn-dedicated-chassis gate_bundles: +- bionic-train - eoan -- bionic +- bionic-ussuri smoke_bundles: -- bionic +- bionic-ussuri +dev_bundles: +- focal target_deploy_status: ovn-central: workload-status: blocked diff --git a/test-requirements.txt b/test-requirements.txt index 14b380e..c43a8db 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,11 +3,10 @@ # requirements management in charms via bot-control. Thank you. # # Lint and unit test requirements -flake8>=2.2.4,<=2.4.1 -stestr>=2.2.0 -requests>=2.18.4 -charms.reactive -mock>=1.2 -nose>=1.3.7 coverage>=3.6 +mock>=1.2 +pep8>=1.7.0 +flake8>=2.2.4 +os-testr>=0.4.1 + git+https://github.com/openstack/charms.openstack.git#egg=charms.openstack diff --git a/unit_tests/__init__.py b/unit_tests/__init__.py index 5408a9d..4670b81 100644 --- a/unit_tests/__init__.py +++ b/unit_tests/__init__.py @@ -22,21 +22,45 @@ import charms_openstack.test_mocks # noqa charms_openstack.test_mocks.mock_charmhelpers() import mock -import charms + + +class _fake_decorator(object): + + def __init__(self, *args): + pass + + def __call__(self, f): + return f + + +charms = mock.MagicMock() +sys.modules['charms'] = charms charms.leadership = mock.MagicMock() -keystoneauth1 = mock.MagicMock() -neutronclient = mock.MagicMock() sys.modules['charms.leadership'] = charms.leadership -keystoneauth1 = mock.MagicMock() -novaclient = mock.MagicMock() -neutron_lib = mock.MagicMock() +charms.reactive = mock.MagicMock() +charms.reactive.when = _fake_decorator +charms.reactive.when_all = _fake_decorator +charms.reactive.when_any = _fake_decorator +charms.reactive.when_not = _fake_decorator +charms.reactive.when_none = _fake_decorator +charms.reactive.when_not_all = _fake_decorator +charms.reactive.not_unless = _fake_decorator +charms.reactive.when_file_changed = _fake_decorator +charms.reactive.collect_metrics = _fake_decorator +charms.reactive.meter_status_changed = _fake_decorator +charms.reactive.only_once = _fake_decorator +charms.reactive.hook = _fake_decorator +charms.reactive.bus = mock.MagicMock() +charms.reactive.flags = mock.MagicMock() +charms.reactive.relations = mock.MagicMock() +sys.modules['charms.reactive'] = charms.reactive +sys.modules['charms.reactive.bus'] = charms.reactive.bus +sys.modules['charms.reactive.bus'] = charms.reactive.decorators +sys.modules['charms.reactive.flags'] = charms.reactive.flags +sys.modules['charms.reactive.relations'] = charms.reactive.relations sys.modules['charms.leadership'] = charms.leadership -sys.modules['keystoneauth1'] = keystoneauth1 -sys.modules['novaclient'] = novaclient -sys.modules['neutronclient'] = neutronclient -sys.modules['neutronclient.v2_0'] = neutronclient.v2_0 -sys.modules['neutron_lib'] = neutron_lib -sys.modules['neutron_lib.constants'] = neutron_lib.constants +netaddr = mock.MagicMock() +sys.modules['netaddr'] = netaddr import reactive reactive.ovn_chassis_charm_handlers = mock.MagicMock() reactive.ovn_chassis_charm_handlers.OVN_CHASSIS_ENABLE_HANDLERS_FLAG = \