Build separately for each supported series and use binary builds
Charms for OpenStack Yoga supports both Ubuntu Focal and Jammy which means Python 3.8 and Python 3.10. Managing dependencies across those two versions is non-trivial and we need to build the charm on the series the charm is supposed to support. Switch to using a binary build which allows pip's dependency resolution to work. This patch also updates manila.py to align with charm-interface-keystone commit 9ad5cade97e14b672ac859d34040353c3a40c7aa. This patch also drops the impish bundle. Change-Id: Ib3aea3fb26aa3e6282989b2758bdf4913ef58c28
This commit is contained in:
parent
f2ab722fe8
commit
10524b6ed3
|
@ -0,0 +1,4 @@
|
||||||
|
libffi-dev [platform:dpkg]
|
||||||
|
libpq-dev [platform:dpkg]
|
||||||
|
libxml2-dev [platform:dpkg]
|
||||||
|
libxslt1-dev [platform:dpkg]
|
|
@ -6,28 +6,52 @@ parts:
|
||||||
- tox
|
- tox
|
||||||
- git
|
- git
|
||||||
- python3-dev
|
- python3-dev
|
||||||
|
- libffi-dev
|
||||||
|
- libssl-dev
|
||||||
|
- rustc
|
||||||
|
- cargo
|
||||||
|
build-environment:
|
||||||
|
- CHARM_INTERFACES_DIR: /root/project/interfaces/
|
||||||
|
- CHARM_LAYERS_DIR: /root/project/layers/
|
||||||
|
- MAKEFLAGS: -j$(nproc)
|
||||||
override-build: |
|
override-build: |
|
||||||
apt-get install ca-certificates -y
|
apt-get install ca-certificates -y
|
||||||
tox -e build-reactive
|
tox -e build-reactive
|
||||||
override-stage: |
|
override-stage: |
|
||||||
echo "Copying charm to staging area: $CHARMCRAFT_STAGE"
|
echo "Copying charm to staging area: $CRAFT_STAGE"
|
||||||
NAME=$(ls $CHARMCRAFT_PART_BUILD/build/builds)
|
NAME=$(ls $CRAFT_PART_BUILD/build/builds)
|
||||||
cp -r $CHARMCRAFT_PART_BUILD/build/builds/$NAME/* $CHARMCRAFT_STAGE/
|
cp -r $CRAFT_PART_BUILD/build/builds/$NAME/* $CRAFT_STAGE/
|
||||||
override-prime: |
|
override-prime: |
|
||||||
# For some reason, the normal priming chokes on the fact that there's a
|
# For some reason, the normal priming chokes on the fact that there's a
|
||||||
# hooks directory.
|
# hooks directory.
|
||||||
cp -r $CHARMCRAFT_STAGE/* .
|
cp -r $CRAFT_STAGE/* .
|
||||||
|
# Charmcraft looks for this specific entry point.
|
||||||
|
mkdir -p src
|
||||||
|
touch src/charm.py
|
||||||
|
chmod +x src/charm.py
|
||||||
|
|
||||||
bases:
|
bases:
|
||||||
- build-on:
|
|
||||||
- name: ubuntu
|
- name: ubuntu
|
||||||
channel: "20.04"
|
channel: "20.04"
|
||||||
architectures:
|
architectures: [amd64]
|
||||||
- amd64
|
|
||||||
run-on:
|
|
||||||
- name: ubuntu
|
- name: ubuntu
|
||||||
channel: "20.04"
|
channel: "20.04"
|
||||||
architectures: [amd64, s390x, ppc64el, arm64]
|
architectures: [arm64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "20.04"
|
||||||
|
architectures: [ppc64el]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "20.04"
|
||||||
|
architectures: [s390x]
|
||||||
- name: ubuntu
|
- name: ubuntu
|
||||||
channel: "22.04"
|
channel: "22.04"
|
||||||
architectures: [amd64, s390x, ppc64el, arm64]
|
architectures: [amd64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [arm64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [ppc64el]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [s390x]
|
||||||
|
|
10
osci.yaml
10
osci.yaml
|
@ -11,14 +11,13 @@
|
||||||
- ganesha-focal-xena
|
- ganesha-focal-xena
|
||||||
- ganesha-focal-yoga:
|
- ganesha-focal-yoga:
|
||||||
voting: false
|
voting: false
|
||||||
- ganesha-impish-xena:
|
|
||||||
voting: false
|
|
||||||
- ganesha-jammy-yoga:
|
- ganesha-jammy-yoga:
|
||||||
voting: false
|
voting: false
|
||||||
vars:
|
vars:
|
||||||
needs_charm_build: true
|
needs_charm_build: true
|
||||||
charm_build_name: manila
|
charm_build_name: manila
|
||||||
build_type: charmcraft
|
build_type: charmcraft
|
||||||
|
charmcraft_channel: 2.0/stable
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: ganesha-focal-xena
|
name: ganesha-focal-xena
|
||||||
|
@ -37,13 +36,6 @@
|
||||||
- ganesha-focal-xena
|
- ganesha-focal-xena
|
||||||
vars:
|
vars:
|
||||||
tox_extra_args: ganesha:focal-yoga
|
tox_extra_args: ganesha:focal-yoga
|
||||||
- job:
|
|
||||||
name: ganesha-impish-xena
|
|
||||||
parent: func-target
|
|
||||||
dependencies:
|
|
||||||
- ganesha-focal-xena
|
|
||||||
vars:
|
|
||||||
tox_extra_args: ganesha:impish-xena
|
|
||||||
- job:
|
- job:
|
||||||
name: ganesha-jammy-yoga
|
name: ganesha-jammy-yoga
|
||||||
parent: func-target
|
parent: func-target
|
||||||
|
|
|
@ -350,8 +350,8 @@ class ManilaCharm(charms_openstack.charm.HAOpenStackCharm):
|
||||||
'{}_admin_url'.format(prefix): admin_url,
|
'{}_admin_url'.format(prefix): admin_url,
|
||||||
'{}_region'.format(prefix): region,
|
'{}_region'.format(prefix): region,
|
||||||
}
|
}
|
||||||
keystone.set_local(**relation_info)
|
for relation in keystone.relations:
|
||||||
keystone.set_remote(**relation_info)
|
relation.to_publish_raw.update(relation_info)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def public_url(self):
|
def public_url(self):
|
||||||
|
|
|
@ -118,7 +118,7 @@ services:
|
||||||
channel: latest/edge
|
channel: latest/edge
|
||||||
|
|
||||||
manila:
|
manila:
|
||||||
charm: ../../../manila.charm
|
charm: ../../../manila_ubuntu-20.04-amd64.charm
|
||||||
num_units: 3
|
num_units: 3
|
||||||
options:
|
options:
|
||||||
default-share-backend: cephfsnfs1
|
default-share-backend: cephfsnfs1
|
||||||
|
|
|
@ -118,7 +118,7 @@ services:
|
||||||
channel: latest/edge
|
channel: latest/edge
|
||||||
|
|
||||||
manila:
|
manila:
|
||||||
charm: ../../../manila.charm
|
charm: ../../../manila_ubuntu-20.04-amd64.charm
|
||||||
num_units: 3
|
num_units: 3
|
||||||
options:
|
options:
|
||||||
default-share-backend: cephfsnfs1
|
default-share-backend: cephfsnfs1
|
||||||
|
|
|
@ -1,342 +0,0 @@
|
||||||
variables:
|
|
||||||
openstack-origin: &openstack-origin distro
|
|
||||||
|
|
||||||
local_overlay_enabled: False
|
|
||||||
|
|
||||||
series: impish
|
|
||||||
|
|
||||||
comment:
|
|
||||||
- 'machines section to decide order of deployment. database sooner = faster'
|
|
||||||
machines:
|
|
||||||
'0':
|
|
||||||
constraints: mem=3072M
|
|
||||||
'1':
|
|
||||||
constraints: mem=3072M
|
|
||||||
'2':
|
|
||||||
constraints: mem=3072M
|
|
||||||
'3':
|
|
||||||
'4':
|
|
||||||
'5':
|
|
||||||
'6':
|
|
||||||
'7':
|
|
||||||
'8':
|
|
||||||
'9':
|
|
||||||
'10':
|
|
||||||
'11':
|
|
||||||
'12':
|
|
||||||
'13':
|
|
||||||
'14':
|
|
||||||
'15':
|
|
||||||
# 16 and 17 are nova compute units
|
|
||||||
'16':
|
|
||||||
constraints: mem=8G
|
|
||||||
'17':
|
|
||||||
constraints: mem=8G
|
|
||||||
'18':
|
|
||||||
'19':
|
|
||||||
'20':
|
|
||||||
'21':
|
|
||||||
'22':
|
|
||||||
'23':
|
|
||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
manila-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
manila-ganesha-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
keystone-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
neutron-api-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
nova-cloud-controller-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
glance-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
placement-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
mysql-innodb-cluster:
|
|
||||||
charm: ch:mysql-innodb-cluster
|
|
||||||
num_units: 3
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '0'
|
|
||||||
- '1'
|
|
||||||
- '2'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
manila-ganesha:
|
|
||||||
num_units: 1
|
|
||||||
charm: ch:manila-ganesha
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '3'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
ceph-mon:
|
|
||||||
charm: ch:ceph-mon
|
|
||||||
num_units: 3
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '4'
|
|
||||||
- '5'
|
|
||||||
- '6'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
ceph-osd:
|
|
||||||
charm: ch:ceph-osd
|
|
||||||
num_units: 3
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
storage:
|
|
||||||
osd-devices: 'cinder,10G'
|
|
||||||
to:
|
|
||||||
- '7'
|
|
||||||
- '8'
|
|
||||||
- '9'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
ceph-fs:
|
|
||||||
charm: ch:ceph-fs
|
|
||||||
num_units: 2
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '10'
|
|
||||||
- '11'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
manila:
|
|
||||||
charm: ../../../manila.charm
|
|
||||||
num_units: 3
|
|
||||||
options:
|
|
||||||
default-share-backend: cephfsnfs1
|
|
||||||
share-protocols: NFS
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '12'
|
|
||||||
- '13'
|
|
||||||
- '14'
|
|
||||||
|
|
||||||
nova-cloud-controller:
|
|
||||||
charm: ch:nova-cloud-controller
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
network-manager: Neutron
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '15'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
nova-compute:
|
|
||||||
charm: ch:nova-compute
|
|
||||||
num_units: 2
|
|
||||||
storage:
|
|
||||||
ephemeral-device: '40G'
|
|
||||||
options:
|
|
||||||
config-flags: default_ephemeral_format=ext4
|
|
||||||
enable-live-migration: true
|
|
||||||
enable-resize: true
|
|
||||||
migration-auth-type: ssh
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '16'
|
|
||||||
- '17'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
glance:
|
|
||||||
charm: ch:glance
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '18'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
neutron-api:
|
|
||||||
charm: ch:neutron-api
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
manage-neutron-plugin-legacy-mode: true
|
|
||||||
neutron-plugin: ovs
|
|
||||||
flat-network-providers: physnet1
|
|
||||||
neutron-security-groups: true
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '19'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
neutron-openvswitch:
|
|
||||||
charm: ch:neutron-openvswitch
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
neutron-gateway:
|
|
||||||
charm: ch:neutron-gateway
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
bridge-mappings: physnet1:br-ex
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '20'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
keystone:
|
|
||||||
charm: ch:keystone
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '21'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
rabbitmq-server:
|
|
||||||
charm: ch:rabbitmq-server
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '22'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
placement:
|
|
||||||
charm: ch:placement
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '23'
|
|
||||||
channel: latest/edge
|
|
||||||
|
|
||||||
nrpe:
|
|
||||||
charm: cs:nrpe
|
|
||||||
|
|
||||||
relations:
|
|
||||||
- - 'ceph-mon'
|
|
||||||
- 'ceph-osd'
|
|
||||||
|
|
||||||
- - 'ceph-mon'
|
|
||||||
- 'ceph-fs'
|
|
||||||
|
|
||||||
- - 'ceph-mon'
|
|
||||||
- 'manila-ganesha'
|
|
||||||
|
|
||||||
- - 'manila:shared-db'
|
|
||||||
- 'manila-mysql-router:shared-db'
|
|
||||||
- - 'manila-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'manila-ganesha'
|
|
||||||
- 'rabbitmq-server'
|
|
||||||
|
|
||||||
- - 'manila-ganesha'
|
|
||||||
- 'keystone'
|
|
||||||
|
|
||||||
- - 'manila'
|
|
||||||
- 'manila-ganesha'
|
|
||||||
|
|
||||||
- - 'manila-ganesha:shared-db'
|
|
||||||
- 'manila-ganesha-mysql-router:shared-db'
|
|
||||||
- - 'manila-ganesha-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'manila'
|
|
||||||
- 'rabbitmq-server'
|
|
||||||
|
|
||||||
- - 'manila'
|
|
||||||
- 'keystone'
|
|
||||||
|
|
||||||
- - 'keystone:shared-db'
|
|
||||||
- 'keystone-mysql-router:shared-db'
|
|
||||||
- - 'keystone-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'neutron-api:shared-db'
|
|
||||||
- 'neutron-api-mysql-router:shared-db'
|
|
||||||
- - 'neutron-api-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'neutron-api:amqp'
|
|
||||||
- 'rabbitmq-server:amqp'
|
|
||||||
|
|
||||||
- - 'neutron-api:neutron-api'
|
|
||||||
- 'nova-cloud-controller:neutron-api'
|
|
||||||
|
|
||||||
- - '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'
|
|
||||||
- 'nova-cloud-controller-mysql-router:shared-db'
|
|
||||||
- - 'nova-cloud-controller-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - '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'
|
|
||||||
- 'glance-mysql-router:shared-db'
|
|
||||||
- - 'glance-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - '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'
|
|
||||||
|
|
||||||
- - 'placement:placement'
|
|
||||||
- 'nova-cloud-controller:placement'
|
|
||||||
|
|
||||||
- - 'placement:amqp'
|
|
||||||
- 'rabbitmq-server:amqp'
|
|
||||||
|
|
||||||
- - 'placement:shared-db'
|
|
||||||
- 'placement-mysql-router:shared-db'
|
|
||||||
- - 'placement-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'placement:identity-service'
|
|
||||||
- 'keystone:identity-service'
|
|
||||||
|
|
||||||
- - 'nrpe:nrpe-external-master'
|
|
||||||
- 'manila:nrpe-external-master'
|
|
|
@ -118,7 +118,7 @@ services:
|
||||||
channel: latest/edge
|
channel: latest/edge
|
||||||
|
|
||||||
manila:
|
manila:
|
||||||
charm: ../../../manila.charm
|
charm: ../../../manila_ubuntu-22.04-amd64.charm
|
||||||
num_units: 3
|
num_units: 3
|
||||||
options:
|
options:
|
||||||
default-share-backend: cephfsnfs1
|
default-share-backend: cephfsnfs1
|
||||||
|
|
|
@ -9,7 +9,6 @@ dev_bundles:
|
||||||
# handle
|
# handle
|
||||||
- ganesha: focal-xena
|
- ganesha: focal-xena
|
||||||
- ganesha: focal-yoga
|
- ganesha: focal-yoga
|
||||||
- ganesha: impish-xena
|
|
||||||
- ganesha: jammy-yoga
|
- ganesha: jammy-yoga
|
||||||
|
|
||||||
smoke_bundles:
|
smoke_bundles:
|
||||||
|
@ -41,7 +40,4 @@ configure_options:
|
||||||
|
|
||||||
tests_options:
|
tests_options:
|
||||||
force_deploy:
|
force_deploy:
|
||||||
# NOTE(lourot): this is needed because the NRPE charm isn't available on
|
|
||||||
# non-LTS Ubuntu series. See lp:1933643
|
|
||||||
- impish-xena
|
|
||||||
- jammy-yoga
|
- jammy-yoga
|
||||||
|
|
20
tox.ini
20
tox.ini
|
@ -11,18 +11,6 @@ envlist = pep8,py3
|
||||||
sitepackages = False
|
sitepackages = False
|
||||||
# NOTE: Avoid false positives by not skipping missing interpreters.
|
# NOTE: Avoid false positives by not skipping missing interpreters.
|
||||||
skip_missing_interpreters = False
|
skip_missing_interpreters = False
|
||||||
# NOTES:
|
|
||||||
# * We avoid the new dependency resolver by pinning pip < 20.3, see
|
|
||||||
# https://github.com/pypa/pip/issues/9187
|
|
||||||
# * Pinning dependencies requires tox >= 3.2.0, see
|
|
||||||
# https://tox.readthedocs.io/en/latest/config.html#conf-requires
|
|
||||||
# * It is also necessary to pin virtualenv as a newer virtualenv would still
|
|
||||||
# lead to fetching the latest pip in the func* tox targets, see
|
|
||||||
# https://stackoverflow.com/a/38133283
|
|
||||||
requires =
|
|
||||||
pip < 20.3
|
|
||||||
virtualenv < 20.0
|
|
||||||
setuptools<50.0.0
|
|
||||||
|
|
||||||
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
|
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
|
||||||
minversion = 3.18.0
|
minversion = 3.18.0
|
||||||
|
@ -41,7 +29,6 @@ allowlist_externals =
|
||||||
charmcraft
|
charmcraft
|
||||||
bash
|
bash
|
||||||
tox
|
tox
|
||||||
rename.sh
|
|
||||||
deps =
|
deps =
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
|
|
||||||
|
@ -50,13 +37,12 @@ basepython = python3
|
||||||
deps = -r{toxinidir}/build-requirements.txt
|
deps = -r{toxinidir}/build-requirements.txt
|
||||||
commands =
|
commands =
|
||||||
charmcraft clean
|
charmcraft clean
|
||||||
charmcraft -v build
|
charmcraft -v pack
|
||||||
{toxinidir}/rename.sh
|
|
||||||
|
|
||||||
[testenv:build-reactive]
|
[testenv:build-reactive]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
commands =
|
commands =
|
||||||
charm-build --log-level DEBUG --use-lock-file-branches -o {toxinidir}/build/builds src {posargs}
|
charm-build --log-level DEBUG --use-lock-file-branches --binary-wheels-from-source -o {toxinidir}/build/builds src {posargs}
|
||||||
|
|
||||||
[testenv:add-build-lock-file]
|
[testenv:add-build-lock-file]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
|
@ -91,7 +77,7 @@ commands = stestr run --slowest {posargs}
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
deps = flake8==3.9.2
|
deps = flake8==3.9.2
|
||||||
charm-tools==2.8.3
|
git+https://github.com/juju/charm-tools.git
|
||||||
commands = flake8 {posargs} src unit_tests
|
commands = flake8 {posargs} src unit_tests
|
||||||
|
|
||||||
[testenv:func-target]
|
[testenv:func-target]
|
||||||
|
|
|
@ -167,6 +167,8 @@ class TestManilaCharm(Helper):
|
||||||
# note that this also tests _custom_register_endpoints() indirectly,
|
# note that this also tests _custom_register_endpoints() indirectly,
|
||||||
# which means it doesn't require a separate test.
|
# which means it doesn't require a separate test.
|
||||||
keystone = mock.MagicMock()
|
keystone = mock.MagicMock()
|
||||||
|
relation = mock.MagicMock()
|
||||||
|
keystone.relations.__iter__.return_value = [relation]
|
||||||
config = {
|
config = {
|
||||||
'region': 'the_region',
|
'region': 'the_region',
|
||||||
}
|
}
|
||||||
|
@ -190,19 +192,18 @@ class TestManilaCharm(Helper):
|
||||||
self.internal_url_v2.return_value = 'i2'
|
self.internal_url_v2.return_value = 'i2'
|
||||||
self.admin_url_v2.return_value = 'a2'
|
self.admin_url_v2.return_value = 'a2'
|
||||||
c.register_endpoints(keystone)
|
c.register_endpoints(keystone)
|
||||||
v1 = mock.call(v1_admin_url='a1',
|
v1 = mock.call({'v1_admin_url': 'a1',
|
||||||
v1_internal_url='i1',
|
'v1_internal_url': 'i1',
|
||||||
v1_public_url='p1',
|
'v1_public_url': 'p1',
|
||||||
v1_region='the_region',
|
'v1_region': 'the_region',
|
||||||
v1_service='manila')
|
'v1_service': 'manila'})
|
||||||
v2 = mock.call(v2_admin_url='a2',
|
v2 = mock.call({'v2_admin_url': 'a2',
|
||||||
v2_internal_url='i2',
|
'v2_internal_url': 'i2',
|
||||||
v2_public_url='p2',
|
'v2_public_url': 'p2',
|
||||||
v2_region='the_region',
|
'v2_region': 'the_region',
|
||||||
v2_service='manilav2')
|
'v2_service': 'manilav2'})
|
||||||
calls = [v1, v2]
|
calls = [v1, v2]
|
||||||
keystone.set_local.assert_has_calls(calls)
|
relation.to_publish_raw.update.assert_has_calls(calls)
|
||||||
keystone.set_remote.assert_has_calls(calls)
|
|
||||||
|
|
||||||
def test_url_endpoints_creation(self):
|
def test_url_endpoints_creation(self):
|
||||||
# Tests that the endpoint functions call through to the baseclass
|
# Tests that the endpoint functions call through to the baseclass
|
||||||
|
|
Loading…
Reference in New Issue