Add functional tests, fixes and pep8
* Add functional tests * Explicitly set python 3 in the ironic API charm class * fix lint errors Change-Id: Ida24b071b2dee3b9205cccfc74a0e654a3c0b13f Func-Test-Pr: https://github.com/openstack-charmers/zaza-openstack-tests/pull/450 Co-authored-by: Aurelien Lourot <aurelien.lourot@canonical.com>
This commit is contained in:
parent
123dabf212
commit
494ef4c91c
4
.gitreview
Normal file
4
.gitreview
Normal file
@ -0,0 +1,4 @@
|
||||
[gerrit]
|
||||
host=review.opendev.org
|
||||
port=29418
|
||||
project=openstack/charm-ironic-api.git
|
4
.zuul.yaml
Normal file
4
.zuul.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
- project:
|
||||
templates:
|
||||
- openstack-python3-charm-jobs
|
||||
- openstack-cover-jobs
|
@ -31,6 +31,7 @@ charms_openstack.charm.use_defaults('charm.default-select-release')
|
||||
def deployment_interface_ip(cls):
|
||||
return ch_ip.get_relation_ip("deployment")
|
||||
|
||||
|
||||
@adapters.config_property
|
||||
def internal_interface_ip(cls):
|
||||
return ch_ip.get_relation_ip("internal")
|
||||
@ -41,6 +42,7 @@ class IronicAPICharm(charms_openstack.charm.HAOpenStackCharm):
|
||||
abstract_class = False
|
||||
release = 'train'
|
||||
name = 'ironic'
|
||||
python_version = 3
|
||||
packages = PACKAGES
|
||||
api_ports = {
|
||||
'ironic-api': {
|
||||
|
@ -6,8 +6,6 @@ import charmhelpers.core.hookenv as hookenv
|
||||
import charms_openstack.charm as charm
|
||||
import charm.openstack.ironic.ironic as ironic # noqa
|
||||
|
||||
from charmhelpers.core.templating import render
|
||||
|
||||
|
||||
# Use the charms.openstack defaults for common states and hooks
|
||||
charm.use_defaults(
|
||||
@ -18,7 +16,8 @@ charm.use_defaults(
|
||||
'config.changed',
|
||||
'update-status',
|
||||
'upgrade-charm',
|
||||
'certificates.available')
|
||||
'certificates.available',
|
||||
'cluster.available')
|
||||
|
||||
|
||||
@reactive.when('shared-db.available')
|
||||
@ -64,6 +63,7 @@ def run_db_migration():
|
||||
|
||||
|
||||
@reactive.when('ha.connected')
|
||||
@reactive.when_not('ha.available')
|
||||
def cluster_connected(hacluster):
|
||||
with charm.provide_charm_instance() as ironic_charm:
|
||||
ironic_charm.configure_ha_resources(hacluster)
|
||||
|
@ -1,4 +1,6 @@
|
||||
[DEFAULT]
|
||||
debug = {{ options.debug }}
|
||||
verbose = {{ options.verbose }}
|
||||
auth_strategy=keystone
|
||||
my_ip = {{ options.internal_interface_ip }}
|
||||
|
||||
|
249
src/tests/bundles/bionic-train.yaml
Normal file
249
src/tests/bundles/bionic-train.yaml
Normal file
@ -0,0 +1,249 @@
|
||||
options:
|
||||
source: &source cloud:bionic-train/proposed
|
||||
series: bionic
|
||||
relations:
|
||||
- - nova-ironic
|
||||
- ironic-api
|
||||
- - ironic-conductor
|
||||
- ironic-api
|
||||
- - neutron-ironic-agent:identity-credentials
|
||||
- keystone
|
||||
- - neutron-ironic-agent
|
||||
- neutron-api
|
||||
- - neutron-openvswitch
|
||||
- neutron-api
|
||||
- - ironic-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-api
|
||||
- keystone
|
||||
- - ironic-api:shared-db
|
||||
- mysql:shared-db
|
||||
- - ironic-conductor:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-conductor
|
||||
- keystone
|
||||
- - ironic-conductor:shared-db
|
||||
- mysql:shared-db
|
||||
- - nova-ironic:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-ironic
|
||||
- glance
|
||||
- - nova-ironic
|
||||
- keystone
|
||||
- - nova-ironic
|
||||
- nova-cloud-controller
|
||||
- - neutron-gateway:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - keystone:shared-db
|
||||
- mysql:shared-db
|
||||
- - nova-cloud-controller:identity-service
|
||||
- keystone:identity-service
|
||||
- - glance:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:shared-db
|
||||
- mysql:shared-db
|
||||
- - neutron-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - neutron-gateway:neutron-plugin-api
|
||||
- neutron-api:neutron-plugin-api
|
||||
- - glance:shared-db
|
||||
- mysql:shared-db
|
||||
- - glance:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:image-service
|
||||
- glance:image-service
|
||||
- - nova-cloud-controller:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:quantum-network-service
|
||||
- neutron-gateway:quantum-network-service
|
||||
- - nova-cloud-controller:shared-db
|
||||
- mysql:shared-db
|
||||
- - nova-cloud-controller:neutron-api
|
||||
- neutron-api:neutron-api
|
||||
- - cinder:image-service
|
||||
- glance:image-service
|
||||
- - cinder:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - cinder:identity-service
|
||||
- keystone:identity-service
|
||||
- - cinder:cinder-volume-service
|
||||
- nova-cloud-controller:cinder-volume-service
|
||||
- - cinder:shared-db
|
||||
- mysql:shared-db
|
||||
- - placement
|
||||
- mysql
|
||||
- - placement
|
||||
- keystone
|
||||
- - placement
|
||||
- nova-cloud-controller
|
||||
- - ceph-mon:client
|
||||
- nova-ironic:ceph
|
||||
- - ceph-mon:client
|
||||
- glance:ceph
|
||||
- - ceph-radosgw:mon
|
||||
- ceph-mon:radosgw
|
||||
- - ceph-radosgw:identity-service
|
||||
- keystone:identity-service
|
||||
- - ceph-osd:mon
|
||||
- ceph-mon:osd
|
||||
- - ceph-radosgw:object-store
|
||||
- glance
|
||||
- - vault:shared-db
|
||||
- mysql:shared-db
|
||||
- - vault:certificates
|
||||
- ceph-radosgw
|
||||
- - vault:certificates
|
||||
- cinder
|
||||
- - vault:certificates
|
||||
- glance:certificates
|
||||
- - vault:certificates
|
||||
- keystone:certificates
|
||||
- - vault:certificates
|
||||
- neutron-api:certificates
|
||||
- - vault:certificates
|
||||
- nova-cloud-controller:certificates
|
||||
- - vault:certificates
|
||||
- placement:certificates
|
||||
- - vault
|
||||
- ironic-conductor
|
||||
- - vault:certificates
|
||||
- ironic-api:certificates
|
||||
- - ironic-api
|
||||
- hacluster-ironic
|
||||
services:
|
||||
cinder:
|
||||
charm: cs:~openstack-charmers-next/cinder
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
block-device: vdb
|
||||
glance-api-version: 2
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
storage:
|
||||
block-devices: cinder,50G
|
||||
ceph-radosgw:
|
||||
charm: cs:~openstack-charmers-next/ceph-radosgw
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
namespace-tenants: True
|
||||
ceph-mon:
|
||||
charm: cs:ceph-mon
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
expected-osd-count: 3
|
||||
source: *source
|
||||
ceph-osd:
|
||||
charm: cs:ceph-osd
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
storage:
|
||||
osd-devices: 'cinder,30G'
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
mysql:
|
||||
charm: cs:percona-cluster
|
||||
num_units: 1
|
||||
constraints: mem=4G
|
||||
options:
|
||||
innodb-buffer-pool-size: 256M
|
||||
max-connections: 1000
|
||||
performance-schema: true
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
flat-network-providers: "physnet1"
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *source
|
||||
manage-neutron-plugin-legacy-mode: false
|
||||
worker-multiplier: 0.25
|
||||
neutron-gateway:
|
||||
charm: cs:~openstack-charmers-next/neutron-gateway
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
enable-isolated-metadata: true
|
||||
enable-metadata-network: true
|
||||
bridge-mappings: physnet1:br-ex
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
nova-ironic:
|
||||
charm: cs:~openstack-charmers-next/nova-compute
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
enable-live-migration: false
|
||||
enable-resize: false
|
||||
openstack-origin: *source
|
||||
virt-type: ironic
|
||||
placement:
|
||||
charm: cs:placement
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
rabbitmq-server:
|
||||
charm: cs:rabbitmq-server
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
hacluster-ironic:
|
||||
charm: cs:~openstack-charmers-next/hacluster
|
||||
num_units: 0
|
||||
ironic-api:
|
||||
charm: ../../../ironic-api
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
ironic-conductor:
|
||||
charm: cs:~openstack-charmers-next/ironic-conductor
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
max-tftp-block-size: 1418
|
||||
disable-secure-erase: true
|
||||
use-ipxe: true
|
||||
enabled-network-interfaces: "flat, noop"
|
||||
neutron-openvswitch:
|
||||
charm: cs:~openstack-charmers-next/neutron-openvswitch
|
||||
num_units: 0
|
||||
options:
|
||||
bridge-mappings: physnet1:br-ex
|
||||
neutron-ironic-agent:
|
||||
charm: cs:~openstack-charmers-next/neutron-api-plugin-ironic
|
||||
num_units: 0
|
||||
options:
|
||||
openstack-origin: *source
|
||||
vault:
|
||||
charm: cs:~openstack-charmers-next/vault
|
||||
num_units: 1
|
249
src/tests/bundles/bionic-ussuri.yaml
Normal file
249
src/tests/bundles/bionic-ussuri.yaml
Normal file
@ -0,0 +1,249 @@
|
||||
options:
|
||||
source: &source cloud:bionic-ussuri/proposed
|
||||
series: bionic
|
||||
relations:
|
||||
- - nova-ironic
|
||||
- ironic-api
|
||||
- - ironic-conductor
|
||||
- ironic-api
|
||||
- - neutron-ironic-agent:identity-credentials
|
||||
- keystone
|
||||
- - neutron-ironic-agent
|
||||
- neutron-api
|
||||
- - neutron-openvswitch
|
||||
- neutron-api
|
||||
- - ironic-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-api
|
||||
- keystone
|
||||
- - ironic-api:shared-db
|
||||
- mysql:shared-db
|
||||
- - ironic-conductor:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-conductor
|
||||
- keystone
|
||||
- - ironic-conductor:shared-db
|
||||
- mysql:shared-db
|
||||
- - nova-ironic:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-ironic
|
||||
- glance
|
||||
- - nova-ironic
|
||||
- keystone
|
||||
- - nova-ironic
|
||||
- nova-cloud-controller
|
||||
- - neutron-gateway:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - keystone:shared-db
|
||||
- mysql:shared-db
|
||||
- - nova-cloud-controller:identity-service
|
||||
- keystone:identity-service
|
||||
- - glance:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:shared-db
|
||||
- mysql:shared-db
|
||||
- - neutron-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - neutron-gateway:neutron-plugin-api
|
||||
- neutron-api:neutron-plugin-api
|
||||
- - glance:shared-db
|
||||
- mysql:shared-db
|
||||
- - glance:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:image-service
|
||||
- glance:image-service
|
||||
- - nova-cloud-controller:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:quantum-network-service
|
||||
- neutron-gateway:quantum-network-service
|
||||
- - nova-cloud-controller:shared-db
|
||||
- mysql:shared-db
|
||||
- - nova-cloud-controller:neutron-api
|
||||
- neutron-api:neutron-api
|
||||
- - cinder:image-service
|
||||
- glance:image-service
|
||||
- - cinder:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - cinder:identity-service
|
||||
- keystone:identity-service
|
||||
- - cinder:cinder-volume-service
|
||||
- nova-cloud-controller:cinder-volume-service
|
||||
- - cinder:shared-db
|
||||
- mysql:shared-db
|
||||
- - placement
|
||||
- mysql
|
||||
- - placement
|
||||
- keystone
|
||||
- - placement
|
||||
- nova-cloud-controller
|
||||
- - ceph-mon:client
|
||||
- nova-ironic:ceph
|
||||
- - ceph-mon:client
|
||||
- glance:ceph
|
||||
- - ceph-radosgw:mon
|
||||
- ceph-mon:radosgw
|
||||
- - ceph-radosgw:identity-service
|
||||
- keystone:identity-service
|
||||
- - ceph-osd:mon
|
||||
- ceph-mon:osd
|
||||
- - ceph-radosgw:object-store
|
||||
- glance
|
||||
- - vault:shared-db
|
||||
- mysql:shared-db
|
||||
- - vault:certificates
|
||||
- ceph-radosgw
|
||||
- - vault:certificates
|
||||
- cinder
|
||||
- - vault:certificates
|
||||
- glance:certificates
|
||||
- - vault:certificates
|
||||
- keystone:certificates
|
||||
- - vault:certificates
|
||||
- neutron-api:certificates
|
||||
- - vault:certificates
|
||||
- nova-cloud-controller:certificates
|
||||
- - vault:certificates
|
||||
- placement:certificates
|
||||
- - vault
|
||||
- ironic-conductor
|
||||
- - vault:certificates
|
||||
- ironic-api:certificates
|
||||
- - ironic-api
|
||||
- hacluster-ironic
|
||||
services:
|
||||
cinder:
|
||||
charm: cs:~openstack-charmers-next/cinder
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
block-device: vdb
|
||||
glance-api-version: 2
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
storage:
|
||||
block-devices: cinder,50G
|
||||
ceph-radosgw:
|
||||
charm: cs:~openstack-charmers-next/ceph-radosgw
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
namespace-tenants: True
|
||||
ceph-mon:
|
||||
charm: cs:ceph-mon
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
expected-osd-count: 3
|
||||
source: *source
|
||||
ceph-osd:
|
||||
charm: cs:ceph-osd
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
storage:
|
||||
osd-devices: 'cinder,30G'
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
mysql:
|
||||
charm: cs:percona-cluster
|
||||
num_units: 1
|
||||
constraints: mem=4G
|
||||
options:
|
||||
innodb-buffer-pool-size: 256M
|
||||
max-connections: 1000
|
||||
performance-schema: true
|
||||
hacluster-ironic:
|
||||
charm: cs:~openstack-charmers-next/hacluster
|
||||
num_units: 0
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
flat-network-providers: "physnet1"
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *source
|
||||
manage-neutron-plugin-legacy-mode: false
|
||||
worker-multiplier: 0.25
|
||||
neutron-gateway:
|
||||
charm: cs:~openstack-charmers-next/neutron-gateway
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
enable-isolated-metadata: true
|
||||
enable-metadata-network: true
|
||||
bridge-mappings: physnet1:br-ex
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
nova-ironic:
|
||||
charm: cs:~openstack-charmers-next/nova-compute
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
enable-live-migration: false
|
||||
enable-resize: false
|
||||
openstack-origin: *source
|
||||
virt-type: ironic
|
||||
placement:
|
||||
charm: cs:placement
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
rabbitmq-server:
|
||||
charm: cs:rabbitmq-server
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
ironic-api:
|
||||
charm: ../../../ironic-api
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
ironic-conductor:
|
||||
charm: cs:~openstack-charmers-next/ironic-conductor
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
max-tftp-block-size: 1418
|
||||
disable-secure-erase: true
|
||||
use-ipxe: true
|
||||
enabled-network-interfaces: "flat, noop"
|
||||
neutron-openvswitch:
|
||||
charm: cs:~openstack-charmers-next/neutron-openvswitch
|
||||
num_units: 0
|
||||
options:
|
||||
bridge-mappings: physnet1:br-ex
|
||||
neutron-ironic-agent:
|
||||
charm: cs:~openstack-charmers-next/neutron-api-plugin-ironic
|
||||
num_units: 0
|
||||
options:
|
||||
openstack-origin: *source
|
||||
vault:
|
||||
charm: cs:~openstack-charmers-next/vault
|
||||
num_units: 1
|
283
src/tests/bundles/focal-ussuri.yaml
Normal file
283
src/tests/bundles/focal-ussuri.yaml
Normal file
@ -0,0 +1,283 @@
|
||||
options:
|
||||
source: &source distro
|
||||
series: focal
|
||||
relations:
|
||||
- - nova-ironic
|
||||
- ironic-api
|
||||
- - ironic-conductor
|
||||
- ironic-api
|
||||
- - neutron-ironic-agent:identity-credentials
|
||||
- keystone
|
||||
- - neutron-ironic-agent
|
||||
- neutron-api
|
||||
- - neutron-openvswitch
|
||||
- neutron-api
|
||||
- - ironic-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-api
|
||||
- keystone
|
||||
- - ironic-api:shared-db
|
||||
- ironic-api-mysql-router:shared-db
|
||||
- - ironic-conductor:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-conductor
|
||||
- keystone
|
||||
- - ironic-conductor:shared-db
|
||||
- ironic-conductor-mysql-router:shared-db
|
||||
- - nova-ironic:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-ironic
|
||||
- glance
|
||||
- - nova-ironic
|
||||
- keystone
|
||||
- - nova-ironic
|
||||
- nova-cloud-controller
|
||||
- - neutron-gateway:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - keystone:shared-db
|
||||
- keystone-mysql-router:shared-db
|
||||
- - nova-cloud-controller:identity-service
|
||||
- keystone:identity-service
|
||||
- - glance:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:shared-db
|
||||
- neutron-api-mysql-router:shared-db
|
||||
- - neutron-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - neutron-gateway:neutron-plugin-api
|
||||
- neutron-api:neutron-plugin-api
|
||||
- - glance:shared-db
|
||||
- glance-mysql-router:shared-db
|
||||
- - glance:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:image-service
|
||||
- glance:image-service
|
||||
- - nova-cloud-controller:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:quantum-network-service
|
||||
- neutron-gateway:quantum-network-service
|
||||
- - nova-cloud-controller:shared-db
|
||||
- nova-cloud-controller-mysql-router:shared-db
|
||||
- - nova-cloud-controller:neutron-api
|
||||
- neutron-api:neutron-api
|
||||
- - cinder:image-service
|
||||
- glance:image-service
|
||||
- - cinder:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - cinder:identity-service
|
||||
- keystone:identity-service
|
||||
- - cinder:cinder-volume-service
|
||||
- nova-cloud-controller:cinder-volume-service
|
||||
- - cinder:shared-db
|
||||
- cinder-mysql-router:shared-db
|
||||
- - placement:shared-db
|
||||
- placement-mysql-router:shared-db
|
||||
- - placement
|
||||
- keystone
|
||||
- - placement
|
||||
- nova-cloud-controller
|
||||
- - ceph-mon:client
|
||||
- nova-ironic:ceph
|
||||
- - ceph-mon:client
|
||||
- glance:ceph
|
||||
- - ceph-radosgw:mon
|
||||
- ceph-mon:radosgw
|
||||
- - ceph-radosgw:identity-service
|
||||
- keystone:identity-service
|
||||
- - ceph-osd:mon
|
||||
- ceph-mon:osd
|
||||
- - ceph-radosgw:object-store
|
||||
- glance
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- nova-cloud-controller-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- keystone-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- glance-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- neutron-api-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- placement-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- cinder-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- ironic-api-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- ironic-conductor-mysql-router:db-router
|
||||
- - vault-mysql-router:db-router
|
||||
- mysql-innodb-cluster:db-router
|
||||
- - vault:shared-db
|
||||
- vault-mysql-router:shared-db
|
||||
- - vault:certificates
|
||||
- ceph-radosgw
|
||||
- - vault:certificates
|
||||
- cinder
|
||||
- - vault:certificates
|
||||
- glance:certificates
|
||||
- - vault:certificates
|
||||
- keystone:certificates
|
||||
- - vault:certificates
|
||||
- neutron-api:certificates
|
||||
- - vault:certificates
|
||||
- nova-cloud-controller:certificates
|
||||
- - vault:certificates
|
||||
- placement:certificates
|
||||
- - vault
|
||||
- ironic-conductor
|
||||
- - vault:certificates
|
||||
- ironic-api:certificates
|
||||
- - ironic-api
|
||||
- hacluster-ironic
|
||||
services:
|
||||
nova-cloud-controller-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
keystone-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
glance-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
neutron-api-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
placement-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
vault-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
cinder-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
ironic-api-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
ironic-conductor-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
mysql-innodb-cluster:
|
||||
charm: cs:~openstack-charmers-next/mysql-innodb-cluster
|
||||
num_units: 3
|
||||
constraints: mem=4G
|
||||
options:
|
||||
source: *source
|
||||
cinder:
|
||||
charm: cs:~openstack-charmers-next/cinder
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
block-device: vdb
|
||||
glance-api-version: 2
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
storage:
|
||||
block-devices: cinder,50G
|
||||
ceph-radosgw:
|
||||
charm: cs:~openstack-charmers-next/ceph-radosgw
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
namespace-tenants: True
|
||||
ceph-mon:
|
||||
charm: cs:ceph-mon
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
expected-osd-count: 3
|
||||
source: *source
|
||||
ceph-osd:
|
||||
charm: cs:ceph-osd
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
storage:
|
||||
osd-devices: 'cinder,30G'
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
flat-network-providers: "physnet1"
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *source
|
||||
manage-neutron-plugin-legacy-mode: false
|
||||
worker-multiplier: 0.25
|
||||
neutron-gateway:
|
||||
charm: cs:~openstack-charmers-next/neutron-gateway
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
enable-isolated-metadata: true
|
||||
enable-metadata-network: true
|
||||
bridge-mappings: physnet1:br-ex
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
nova-ironic:
|
||||
charm: cs:~openstack-charmers-next/nova-compute
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
enable-live-migration: false
|
||||
enable-resize: false
|
||||
openstack-origin: *source
|
||||
virt-type: ironic
|
||||
placement:
|
||||
charm: cs:placement
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
rabbitmq-server:
|
||||
charm: cs:rabbitmq-server
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
hacluster-ironic:
|
||||
charm: cs:~openstack-charmers-next/hacluster
|
||||
num_units: 0
|
||||
ironic-api:
|
||||
charm: ../../../ironic-api
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
ironic-conductor:
|
||||
charm: cs:~openstack-charmers-next/ironic-conductor
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
max-tftp-block-size: 1418
|
||||
disable-secure-erase: true
|
||||
use-ipxe: true
|
||||
enabled-network-interfaces: "flat, noop"
|
||||
neutron-openvswitch:
|
||||
charm: cs:~openstack-charmers-next/neutron-openvswitch
|
||||
num_units: 0
|
||||
options:
|
||||
bridge-mappings: physnet1:br-ex
|
||||
neutron-ironic-agent:
|
||||
charm: cs:~openstack-charmers-next/neutron-api-plugin-ironic
|
||||
num_units: 0
|
||||
options:
|
||||
openstack-origin: *source
|
||||
vault:
|
||||
charm: cs:~openstack-charmers-next/vault
|
||||
num_units: 1
|
283
src/tests/bundles/focal-victoria.yaml
Normal file
283
src/tests/bundles/focal-victoria.yaml
Normal file
@ -0,0 +1,283 @@
|
||||
options:
|
||||
source: &source cloud:focal-victoria/proposed
|
||||
series: focal
|
||||
relations:
|
||||
- - nova-ironic
|
||||
- ironic-api
|
||||
- - ironic-conductor
|
||||
- ironic-api
|
||||
- - neutron-ironic-agent:identity-credentials
|
||||
- keystone
|
||||
- - neutron-ironic-agent
|
||||
- neutron-api
|
||||
- - neutron-openvswitch
|
||||
- neutron-api
|
||||
- - ironic-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-api
|
||||
- keystone
|
||||
- - ironic-api:shared-db
|
||||
- ironic-api-mysql-router:shared-db
|
||||
- - ironic-conductor:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - ironic-conductor
|
||||
- keystone
|
||||
- - ironic-conductor:shared-db
|
||||
- ironic-conductor-mysql-router:shared-db
|
||||
- - nova-ironic:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-ironic
|
||||
- glance
|
||||
- - nova-ironic
|
||||
- keystone
|
||||
- - nova-ironic
|
||||
- nova-cloud-controller
|
||||
- - neutron-gateway:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - keystone:shared-db
|
||||
- keystone-mysql-router:shared-db
|
||||
- - nova-cloud-controller:identity-service
|
||||
- keystone:identity-service
|
||||
- - glance:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:identity-service
|
||||
- keystone:identity-service
|
||||
- - neutron-api:shared-db
|
||||
- neutron-api-mysql-router:shared-db
|
||||
- - neutron-api:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - neutron-gateway:neutron-plugin-api
|
||||
- neutron-api:neutron-plugin-api
|
||||
- - glance:shared-db
|
||||
- glance-mysql-router:shared-db
|
||||
- - glance:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:image-service
|
||||
- glance:image-service
|
||||
- - nova-cloud-controller:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - nova-cloud-controller:quantum-network-service
|
||||
- neutron-gateway:quantum-network-service
|
||||
- - nova-cloud-controller:shared-db
|
||||
- nova-cloud-controller-mysql-router:shared-db
|
||||
- - nova-cloud-controller:neutron-api
|
||||
- neutron-api:neutron-api
|
||||
- - cinder:image-service
|
||||
- glance:image-service
|
||||
- - cinder:amqp
|
||||
- rabbitmq-server:amqp
|
||||
- - cinder:identity-service
|
||||
- keystone:identity-service
|
||||
- - cinder:cinder-volume-service
|
||||
- nova-cloud-controller:cinder-volume-service
|
||||
- - cinder:shared-db
|
||||
- cinder-mysql-router:shared-db
|
||||
- - placement:shared-db
|
||||
- placement-mysql-router:shared-db
|
||||
- - placement
|
||||
- keystone
|
||||
- - placement
|
||||
- nova-cloud-controller
|
||||
- - ceph-mon:client
|
||||
- nova-ironic:ceph
|
||||
- - ceph-mon:client
|
||||
- glance:ceph
|
||||
- - ceph-radosgw:mon
|
||||
- ceph-mon:radosgw
|
||||
- - ceph-radosgw:identity-service
|
||||
- keystone:identity-service
|
||||
- - ceph-osd:mon
|
||||
- ceph-mon:osd
|
||||
- - ceph-radosgw:object-store
|
||||
- glance
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- nova-cloud-controller-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- keystone-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- glance-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- neutron-api-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- placement-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- cinder-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- ironic-api-mysql-router:db-router
|
||||
- - mysql-innodb-cluster:db-router
|
||||
- ironic-conductor-mysql-router:db-router
|
||||
- - vault-mysql-router:db-router
|
||||
- mysql-innodb-cluster:db-router
|
||||
- - vault:shared-db
|
||||
- vault-mysql-router:shared-db
|
||||
- - vault:certificates
|
||||
- ceph-radosgw
|
||||
- - vault:certificates
|
||||
- cinder
|
||||
- - vault:certificates
|
||||
- glance:certificates
|
||||
- - vault:certificates
|
||||
- keystone:certificates
|
||||
- - vault:certificates
|
||||
- neutron-api:certificates
|
||||
- - vault:certificates
|
||||
- nova-cloud-controller:certificates
|
||||
- - vault:certificates
|
||||
- placement:certificates
|
||||
- - vault
|
||||
- ironic-conductor
|
||||
- - vault:certificates
|
||||
- ironic-api:certificates
|
||||
- - ironic-api
|
||||
- hacluster-ironic
|
||||
services:
|
||||
nova-cloud-controller-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
keystone-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
glance-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
neutron-api-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
placement-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
vault-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
cinder-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
ironic-api-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
ironic-conductor-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
mysql-innodb-cluster:
|
||||
charm: cs:~openstack-charmers-next/mysql-innodb-cluster
|
||||
num_units: 3
|
||||
constraints: mem=4G
|
||||
options:
|
||||
source: *source
|
||||
cinder:
|
||||
charm: cs:~openstack-charmers-next/cinder
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
block-device: vdb
|
||||
glance-api-version: 2
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
storage:
|
||||
block-devices: cinder,50G
|
||||
ceph-radosgw:
|
||||
charm: cs:~openstack-charmers-next/ceph-radosgw
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
namespace-tenants: True
|
||||
ceph-mon:
|
||||
charm: cs:ceph-mon
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
expected-osd-count: 3
|
||||
source: *source
|
||||
ceph-osd:
|
||||
charm: cs:ceph-osd
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
source: *source
|
||||
storage:
|
||||
osd-devices: 'cinder,30G'
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
flat-network-providers: "physnet1"
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *source
|
||||
manage-neutron-plugin-legacy-mode: false
|
||||
worker-multiplier: 0.25
|
||||
neutron-gateway:
|
||||
charm: cs:~openstack-charmers-next/neutron-gateway
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
enable-isolated-metadata: true
|
||||
enable-metadata-network: true
|
||||
bridge-mappings: physnet1:br-ex
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
nova-ironic:
|
||||
charm: cs:~openstack-charmers-next/nova-compute
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
enable-live-migration: false
|
||||
enable-resize: false
|
||||
openstack-origin: *source
|
||||
virt-type: ironic
|
||||
placement:
|
||||
charm: cs:placement
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
worker-multiplier: 0.25
|
||||
rabbitmq-server:
|
||||
charm: cs:rabbitmq-server
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
hacluster-ironic:
|
||||
charm: cs:~openstack-charmers-next/hacluster
|
||||
num_units: 0
|
||||
ironic-api:
|
||||
charm: ../../../ironic-api
|
||||
num_units: 3
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
ironic-conductor:
|
||||
charm: cs:~openstack-charmers-next/ironic-conductor
|
||||
num_units: 1
|
||||
constraints: mem=2G
|
||||
options:
|
||||
openstack-origin: *source
|
||||
max-tftp-block-size: 1418
|
||||
disable-secure-erase: true
|
||||
use-ipxe: true
|
||||
enabled-network-interfaces: "flat, noop"
|
||||
neutron-openvswitch:
|
||||
charm: cs:~openstack-charmers-next/neutron-openvswitch
|
||||
num_units: 0
|
||||
options:
|
||||
bridge-mappings: physnet1:br-ex
|
||||
neutron-ironic-agent:
|
||||
charm: cs:~openstack-charmers-next/neutron-api-plugin-ironic
|
||||
num_units: 0
|
||||
options:
|
||||
openstack-origin: *source
|
||||
vault:
|
||||
charm: cs:~openstack-charmers-next/vault
|
||||
num_units: 1
|
1
src/tests/bundles/overlays/bionic-train.yaml.j2
Symbolic link
1
src/tests/bundles/overlays/bionic-train.yaml.j2
Symbolic link
@ -0,0 +1 @@
|
||||
ironic.j2
|
1
src/tests/bundles/overlays/bionic-ussuri.yaml.j2
Symbolic link
1
src/tests/bundles/overlays/bionic-ussuri.yaml.j2
Symbolic link
@ -0,0 +1 @@
|
||||
ironic.j2
|
1
src/tests/bundles/overlays/focal-ussuri.yaml.j2
Symbolic link
1
src/tests/bundles/overlays/focal-ussuri.yaml.j2
Symbolic link
@ -0,0 +1 @@
|
||||
ironic.j2
|
1
src/tests/bundles/overlays/focal-victoria.yaml.j2
Symbolic link
1
src/tests/bundles/overlays/focal-victoria.yaml.j2
Symbolic link
@ -0,0 +1 @@
|
||||
ironic.j2
|
4
src/tests/bundles/overlays/ironic.j2
Normal file
4
src/tests/bundles/overlays/ironic.j2
Normal file
@ -0,0 +1,4 @@
|
||||
applications:
|
||||
ironic-api:
|
||||
options:
|
||||
vip: '{{ OS_VIP00 }}'
|
29
src/tests/tests.yaml
Normal file
29
src/tests/tests.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
charm_name: ironic-api
|
||||
gate_bundles:
|
||||
- focal-ussuri
|
||||
- bionic-train
|
||||
- bionic-ussuri
|
||||
smoke_bundles:
|
||||
- bionic-ussuri
|
||||
dev_bundles:
|
||||
- focal-victoria
|
||||
target_deploy_status:
|
||||
vault:
|
||||
workload-status: blocked
|
||||
workload-status-message: Vault needs to be initialized
|
||||
ironic-conductor:
|
||||
workload-status: blocked
|
||||
workload-status-message: invalid enabled-deploy-interfaces config
|
||||
configure:
|
||||
- zaza.openstack.charm_tests.vault.setup.auto_initialize
|
||||
- zaza.openstack.charm_tests.ironic.setup.set_temp_url_secret
|
||||
- zaza.openstack.charm_tests.ironic.setup.add_ironic_deployment_image
|
||||
- zaza.openstack.charm_tests.ironic.setup.add_ironic_os_image
|
||||
- zaza.openstack.charm_tests.ironic.setup.create_bm_flavors
|
||||
# Ironic will require a flat network to test the flat network type. Once a proper
|
||||
# testing environment will be available for Ironic, we will need to add the setup
|
||||
# call to create that flat network
|
||||
#- zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network
|
||||
- zaza.openstack.charm_tests.nova.setup.manage_ssh_key
|
||||
tests:
|
||||
- zaza.openstack.charm_tests.ironic.tests.IronicTest
|
@ -1,5 +1,4 @@
|
||||
import sys
|
||||
import mock
|
||||
|
||||
sys.path.append('src')
|
||||
sys.path.append('src/lib')
|
||||
|
@ -12,7 +12,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import json
|
||||
import mock
|
||||
|
||||
from charm.openstack.ironic import ironic
|
||||
@ -50,6 +49,7 @@ class TestRegisteredHooks(test_utils.TestRegisteredHooks):
|
||||
'when_not': {
|
||||
'run_db_migration': (
|
||||
'db.synced',),
|
||||
'cluster_connected': ('ha.available',),
|
||||
},
|
||||
'hook': {
|
||||
'upgrade_charm': ('upgrade-charm',),
|
||||
|
@ -74,17 +74,15 @@ class TestIronicCharm(test_utils.PatchHelper):
|
||||
unit = mock.MagicMock()
|
||||
unit.relation.relation_id = "fake"
|
||||
baremetal.all_joined_units = [unit]
|
||||
relation_data = {"ready": True}
|
||||
relation_data = {"ironic-api-ready": True}
|
||||
self.target.set_ironic_api_info(baremetal)
|
||||
|
||||
baremetal.set_baremetal_info.assert_called_with(
|
||||
"fake", relation_data)
|
||||
|
||||
self.is_flag_set.return_value = False
|
||||
relation_data = {"ready": False}
|
||||
relation_data = {"ironic-api-ready": False}
|
||||
self.target.set_ironic_api_info(baremetal)
|
||||
|
||||
baremetal.set_baremetal_info.assert_called_with(
|
||||
"fake", relation_data)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user