diff --git a/requirements.txt b/requirements.txt index bad6c5d..56e8b71 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,8 @@ +# This file is managed centrally by release-tools and should not be modified +# within individual charm repos. See the 'global' dir contents for available +# choices of *requirements.txt files for OpenStack Charms: +# https://github.com/openstack-charmers/release-tools +# # Build requirements charm-tools>=2.4.4 -simplejson +simplejson \ No newline at end of file diff --git a/src/lib/charm/openstack/manila_ganesha.py b/src/lib/charm/openstack/manila_ganesha.py index f608277..4931904 100644 --- a/src/lib/charm/openstack/manila_ganesha.py +++ b/src/lib/charm/openstack/manila_ganesha.py @@ -135,6 +135,8 @@ class ManilaGaneshaCharm(charms_openstack.charm.HAOpenStackCharm, source_config_key = 'openstack-origin' packages = [ 'ceph-common', + 'python3-cephfs', + 'python3-rados', 'nfs-ganesha-ceph', 'manila-share', 'python3-manila', diff --git a/src/test-requirements.txt b/src/test-requirements.txt index 1911423..f62563a 100644 --- a/src/test-requirements.txt +++ b/src/test-requirements.txt @@ -1,12 +1,8 @@ -# This file is managed centrally. If you find the need to modify this as a -# one-off, please don't. Intead, consult #openstack-charms and ask about -# requirements management in charms via bot-control. Thank you. -charm-tools>=2.4.4 -coverage>=3.6 -mock>=1.2 -flake8>=2.2.4,<=2.4.1 -stestr>=2.2.0 -requests>=2.18.4 -python-manilaclient +# This file is managed centrally by release-tools and should not be modified +# within individual charm repos. See the 'global' dir contents for available +# choices of *requirements.txt files for OpenStack Charms: +# https://github.com/openstack-charmers/release-tools +# +# Functional Test Requirements (let Zaza's dependencies solve all dependencies here!) git+https://github.com/openstack-charmers/zaza.git#egg=zaza git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack \ No newline at end of file diff --git a/src/tests/bundles/bionic-rocky.yaml b/src/tests/bundles/bionic-rocky.yaml index 3f1b9b3..18ebb7b 100644 --- a/src/tests/bundles/bionic-rocky.yaml +++ b/src/tests/bundles/bionic-rocky.yaml @@ -1,5 +1,5 @@ series: bionic -variables: +options: source: &source cloud:bionic-rocky services: manila-ganesha: @@ -9,7 +9,7 @@ services: options: openstack-origin: *source ceph-mon: - charm: /home/ubuntu/ceph-mon + charm: cs:~openstack-charmers-next/ceph-mon num_units: 3 options: source: *source @@ -27,7 +27,7 @@ services: source: *source manila: # charm: cs:~openstack-charmers-next/manila - charm: /home/ubuntu/manila/build/builds/manila + charm: cs:~openstack-charmers-next/manila num_units: 1 options: openstack-origin: *source diff --git a/src/tests/bundles/bionic-stein.yaml b/src/tests/bundles/bionic-stein.yaml index d588038..6aef92e 100644 --- a/src/tests/bundles/bionic-stein.yaml +++ b/src/tests/bundles/bionic-stein.yaml @@ -9,7 +9,7 @@ services: options: openstack-origin: *source ceph-mon: - charm: /home/ubuntu/ceph-mon + charm: cs:~openstack-charmers-next/ceph-mon num_units: 3 options: source: *source @@ -27,7 +27,7 @@ services: source: *source manila: # charm: cs:~openstack-charmers-next/manila - charm: /home/ubuntu/manila/build/builds/manila + charm: cs:~openstack-charmers-next/manila num_units: 1 options: openstack-origin: *source diff --git a/src/tests/bundles/bionic-train.yaml b/src/tests/bundles/bionic-train.yaml new file mode 100644 index 0000000..df5dc11 --- /dev/null +++ b/src/tests/bundles/bionic-train.yaml @@ -0,0 +1,161 @@ +series: bionic +options: + source: &source cloud:bionic-train +services: + manila-ganesha: + num_units: 1 + series: bionic + charm: ../../../manila-ganesha + options: + openstack-origin: *source + ceph-mon: + charm: cs:~openstack-charmers-next/ceph-mon + num_units: 3 + options: + source: *source + ceph-osd: + charm: cs:~openstack-charmers-next/ceph-osd + num_units: 3 + options: + source: *source + storage: + osd-devices: 'cinder,10G' + ceph-fs: + charm: cs:~openstack-charmers-next/ceph-fs + num_units: 2 + options: + source: *source + manila: + # charm: cs:~openstack-charmers-next/manila + charm: cs:~openstack-charmers-next/manila + num_units: 1 + options: + openstack-origin: *source + default-share-backend: cephfsnfs1 + share-protocols: NFS + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + network-manager: Neutron + openstack-origin: *source + placement: + charm: cs:~openstack-charmers-next/placement + num_units: 1 + options: + openstack-origin: *source + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 2 + constraints: mem=8G + options: + config-flags: default_ephemeral_format=ext4 + enable-live-migration: true + enable-resize: true + migration-auth-type: ssh + openstack-origin: *source + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + options: + openstack-origin: *source + neutron-api: + charm: cs:~openstack-charmers-next/neutron-api + num_units: 1 + options: + flat-network-providers: physnet1 + neutron-security-groups: true + openstack-origin: *source + neutron-openvswitch: + charm: cs:~openstack-charmers-next/neutron-openvswitch + neutron-gateway: + charm: cs:~openstack-charmers-next/neutron-gateway + num_units: 1 + options: + bridge-mappings: physnet1:br-ex + openstack-origin: *source + rabbitmq-server: + charm: cs:~openstack-charmers-next/rabbitmq-server + num_units: 1 + options: + source: *source + percona-cluster: + charm: cs:~openstack-charmers-next/percona-cluster + num_units: 1 + options: + source: *source + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *source + +relations: + - - ceph-mon + - ceph-osd + - - ceph-mon + - ceph-fs + - - ceph-mon + - manila-ganesha + - - manila-ganesha + - percona-cluster + - - manila-ganesha + - rabbitmq-server + - - manila-ganesha + - keystone + - - manila + - manila-ganesha + - - manila + - rabbitmq-server + - - manila + - keystone + - - keystone + - percona-cluster + - - manila + - percona-cluster + - - 'neutron-api:shared-db' + - 'percona-cluster:shared-db' + - - 'neutron-api:amqp' + - 'rabbitmq-server:amqp' + - - 'neutron-api:neutron-api' + - 'nova-cloud-controller:neutron-api' + - - 'placement:placement' + - 'nova-cloud-controller:placement' + - - 'placement:amqp' + - 'rabbitmq-server:amqp' + - - 'placement:shared-db' + - 'percona-cluster:shared-db' + - - 'placement:identity-service' + - 'keystone:identity-service' + - - 'neutron-api:neutron-plugin-api' + - 'neutron-gateway:neutron-plugin-api' + - - 'neutron-api:identity-service' + - 'keystone:identity-service' + - - 'nova-compute:neutron-plugin' + - 'neutron-openvswitch:neutron-plugin' + - - 'nova-cloud-controller:shared-db' + - 'percona-cluster:shared-db' + - - 'neutron-gateway:amqp' + - 'rabbitmq-server:amqp' + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + - - 'nova-compute:amqp' + - 'rabbitmq-server:amqp' + - - 'neutron-openvswitch:amqp' + - 'rabbitmq-server:amqp' + - - 'nova-cloud-controller:identity-service' + - 'keystone:identity-service' + - - 'nova-cloud-controller:cloud-compute' + - 'nova-compute:cloud-compute' + - - 'glance:identity-service' + - 'keystone:identity-service' + - - 'glance:shared-db' + - 'percona-cluster:shared-db' + - - 'glance:amqp' + - 'rabbitmq-server:amqp' + - - 'nova-compute:image-service' + - 'glance:image-service' + - - 'nova-cloud-controller:image-service' + - 'glance:image-service' + - - 'nova-cloud-controller:quantum-network-service' + - 'neutron-gateway:quantum-network-service' diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index 78609e0..0169c43 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -3,10 +3,10 @@ dev_bundles: - bionic gate_bundles: - bionic-rocky -- bionic-queens - bionic-stein +- bionic-train smoke_bundles: -- bionic-stein +- bionic-train target_deploy_status: {} tests: - local_tests.manila_ganesha.tests.ManilaGaneshaTests diff --git a/src/tox.ini b/src/tox.ini index a1dd0c9..9c27bbf 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -1,89 +1,35 @@ -# Classic charm: ./tox.ini +# Source charm (with zaza): ./src/tox.ini # This file is managed centrally by release-tools and should not be modified -# within individual charm repos. +# within individual charm repos. See the 'global' dir contents for available +# choices of tox.ini for OpenStack Charms: +# https://github.com/openstack-charmers/release-tools + [tox] -envlist = pep8,py37 +envlist = pep8 skipsdist = True +# NOTE: Avoid build/test env pollution by not enabling sitepackages. +sitepackages = False +# NOTE: Avoid false positives by not skipping missing interpreters. +skip_missing_interpreters = False [testenv] setenv = VIRTUAL_ENV={envdir} PYTHONHASHSEED=0 - CHARM_DIR={envdir} - AMULET_SETUP_TIMEOUT=5400 +whitelist_externals = juju +passenv = HOME TERM CS_* OS_* TEST_* +deps = -r{toxinidir}/test-requirements.txt install_command = pip install {opts} {packages} -commands = stestr run {posargs} -whitelist_externals = juju -passenv = HOME TERM AMULET_* CS_API_* OS_* -deps = -r{toxinidir}/test-requirements.txt - -[testenv:py27] -basepython = python2.7 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt -# temporarily disable py27 -commands = /bin/true - -[testenv:py3] -basepython = python3 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt - -; keep zuul happy until we change the py35 job -[testenv:py35] -basepython = python3.5 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt - -[testenv:py36] -basepython = python3.6 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt - -[testenv:py37] -basepython = python3.7 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt [testenv:pep8] basepython = python3 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt -commands = flake8 {posargs} hooks unit_tests tests actions lib - charm-proof +deps=charm-tools +commands = charm-proof -[testenv:cover] -# Technique based heavily upon -# https://github.com/openstack/nova/blob/master/tox.ini +[testenv:func-noop] basepython = python3 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt -setenv = - {[testenv]setenv} - PYTHON=coverage run commands = - coverage erase - stestr run {posargs} - coverage combine - coverage html -d cover - coverage xml -o cover/coverage.xml - coverage report - -[coverage:run] -branch = True -concurrency = multiprocessing -parallel = True -source = - . -omit = - .tox/* - */charmhelpers/* - unit_tests/* - -[testenv:venv] -basepython = python3 -commands = {posargs} - + functest-run-suite --help [testenv:func] basepython = python3 @@ -95,11 +41,10 @@ basepython = python3 commands = functest-run-suite --keep-model --smoke -[testenv:func-dev] +[testenv:func-target] basepython = python3 commands = - functest-run-suite --keep-model --dev + functest-run-suite --keep-model --bundle {posargs} -[flake8] -ignore = E402,E226 -exclude = */charmhelpers +[testenv:venv] +commands = {posargs} \ No newline at end of file diff --git a/test-requirements.txt b/test-requirements.txt index f2381f1..f7a45c7 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,12 +1,14 @@ +# This file is managed centrally by release-tools and should not be modified +# within individual charm repos. See the 'global' dir contents for available +# choices of *requirements.txt files for OpenStack Charms: +# https://github.com/openstack-charmers/release-tools +# # Lint and unit test requirements -flake8 +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 -git+https://github.com/openstack/charms.openstack.git#egg=charms-openstack - -# TODO: Migrate to zaza-openstack-charms -python-manilaclient +git+https://github.com/openstack/charms.openstack.git#egg=charms.openstack \ No newline at end of file diff --git a/tox.ini b/tox.ini index 0deba4c..f8f5092 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,15 @@ # Source charm: ./tox.ini # This file is managed centrally by release-tools and should not be modified -# within individual charm repos. +# within individual charm repos. See the 'global' dir contents for available +# choices of tox.ini for OpenStack Charms: +# https://github.com/openstack-charmers/release-tools + [tox] skipsdist = True -envlist = pep8,py37 -# NOTE(beisner): Avoid build/test env pollution by not enabling sitepackages. +envlist = pep8,py3 +# NOTE: Avoid build/test env pollution by not enabling sitepackages. sitepackages = False -# NOTE(beisner): Avoid false positives by not skipping missing interpreters. +# NOTE: Avoid false positives by not skipping missing interpreters. skip_missing_interpreters = False [testenv] @@ -16,45 +19,36 @@ setenv = VIRTUAL_ENV={envdir} LAYER_PATH={toxinidir}/layers INTERFACE_PATH={toxinidir}/interfaces JUJU_REPOSITORY={toxinidir}/build -passenv = http_proxy https_proxy USER +passenv = http_proxy https_proxy INTERFACE_PATH LAYER_PATH JUJU_REPOSITORY install_command = pip install {opts} {packages} - -[testenv:build] -basepython = python2.7 deps = -r{toxinidir}/requirements.txt + +[testenv:build] +basepython = python3 commands = charm-build --log-level DEBUG -o {toxinidir}/build src {posargs} -[testenv:py27] -basepython = python2.7 -deps = -# Reactive source charms are Python3-only, but a py27 unit test target -# is required by OpenStack Governance. Remove this shim as soon as -# permitted. http://governance.openstack.org/reference/cti/python_cti.html -whitelist_externals = true -commands = true - -[testenv:py34] -basepython = python3.4 +[testenv:py3] +basepython = python3 deps = -r{toxinidir}/test-requirements.txt -commands = stestr run {posargs} +commands = stestr run --slowest {posargs} [testenv:py35] basepython = python3.5 deps = -r{toxinidir}/test-requirements.txt -commands = stestr run {posargs} +commands = stestr run --slowest {posargs} [testenv:py36] basepython = python3.6 deps = -r{toxinidir}/test-requirements.txt -commands = stestr run {posargs} +commands = stestr run --slowest {posargs} [testenv:py37] basepython = python3.7 deps = -r{toxinidir}/test-requirements.txt -commands = stestr run {posargs} +commands = stestr run --slowest {posargs} [testenv:pep8] basepython = python3 @@ -72,7 +66,7 @@ setenv = PYTHON=coverage run commands = coverage erase - stestr run {posargs} + stestr run --slowest {posargs} coverage combine coverage html -d cover coverage xml -o cover/coverage.xml @@ -90,8 +84,9 @@ omit = unit_tests/* [testenv:venv] +basepython = python3 commands = {posargs} [flake8] # E402 ignore necessary for path append before sys module import in actions -ignore = E402,W504 +ignore = E402,W504 \ No newline at end of file