Add Zaza functional tests

Also change repo URL in layer.yaml, make linter happy
and add groovy to the metadata.

Change-Id: I09513db77d110fd8acb3bfee7f6d78ae3f053ca3
Co-authored-by: Aurelien Lourot <aurelien.lourot@canonical.com>
This commit is contained in:
Gabriel Adrian Samfira 2020-10-04 19:54:43 +00:00 committed by Aurelien Lourot
parent cc78ad6bba
commit 70c5d772aa
20 changed files with 1412 additions and 17 deletions

4
.gitreview Normal file
View File

@ -0,0 +1,4 @@
[gerrit]
host=review.opendev.org
port=29418
project=openstack/charm-neutron-api-plugin-ironic.git

4
.zuul.yaml Normal file
View File

@ -0,0 +1,4 @@
- project:
templates:
- openstack-python3-charm-jobs
- openstack-cover-jobs

View File

@ -2,7 +2,7 @@ includes:
- 'layer:openstack' - 'layer:openstack'
- 'interface:neutron-plugin-api-subordinate' - 'interface:neutron-plugin-api-subordinate'
- 'interface:keystone-credentials' - 'interface:keystone-credentials'
repo: https://github.com/gabriel-samfira/charm-neutron-api-plugin-ironic repo: https://opendev.org/openstack/charm-neutron-api-plugin-ironic.git
options: options:
basic: basic:
use_venv: False use_venv: False

View File

@ -1,7 +1,3 @@
from charmhelpers.core.hookenv import (
config,
log
)
import charms_openstack.charm as charm import charms_openstack.charm as charm
IRONIC_AGENT_CONF = "/etc/neutron/plugins/ml2/ironic_neutron_agent.ini" IRONIC_AGENT_CONF = "/etc/neutron/plugins/ml2/ironic_neutron_agent.ini"
@ -23,7 +19,7 @@ class NeutronIronicAgentCharm(charm.OpenStackCharm):
python_version = 3 python_version = 3
packages = ['ironic-neutron-agent', 'python3-ironic-neutron-agent'] packages = ['ironic-neutron-agent', 'python3-ironic-neutron-agent']
default_service = 'ironic-neutron-agent' default_service = 'ironic-neutron-agent'
services = [default_service,] services = [default_service]
restart_map = { restart_map = {
IRONIC_AGENT_CONF: [default_service, ], IRONIC_AGENT_CONF: [default_service, ],

View File

@ -10,6 +10,7 @@ subordinate: true
series: series:
- bionic - bionic
- focal - focal
- groovy
provides: provides:
neutron-plugin-api-subordinate: neutron-plugin-api-subordinate:
interface: neutron-plugin-api-subordinate interface: neutron-plugin-api-subordinate

View File

@ -1,10 +1,7 @@
import charms.reactive as reactive import charms.reactive as reactive
import charm.openstack.neutron_ironic as ironic import charm.openstack.neutron_ironic as ironic
import json
from charmhelpers.core.hookenv import ( from charmhelpers.core.hookenv import (
config,
log, log,
) )
@ -20,6 +17,7 @@ use_defaults(
'update-status', 'update-status',
) )
@reactive.when('identity-credentials.available') @reactive.when('identity-credentials.available')
def render_stuff(*args): def render_stuff(*args):
with provide_charm_instance() as ironic_charm: with provide_charm_instance() as ironic_charm:

View File

@ -0,0 +1,250 @@
options:
source: &source cloud:bionic-train/proposed
series: bionic
local_overlay_enabled: false
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:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/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:~openstack-charmers-next/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:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
hacluster-ironic:
charm: cs:~openstack-charmers-next/hacluster
num_units: 0
ironic-api:
charm: cs:~openstack-charmers-next/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: ../../../neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1,250 @@
options:
source: &source cloud:bionic-ussuri/proposed
series: bionic
local_overlay_enabled: false
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:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/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:~openstack-charmers-next/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:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
ironic-api:
charm: cs:~openstack-charmers-next/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: ../../../neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1,284 @@
options:
source: &source distro
series: focal
local_overlay_enabled: false
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:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/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:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
hacluster-ironic:
charm: cs:~openstack-charmers-next/hacluster
num_units: 0
ironic-api:
charm: cs:~openstack-charmers-next/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: ../../../neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1,284 @@
options:
source: &source cloud:focal-victoria/proposed
series: focal
local_overlay_enabled: false
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:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/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:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
hacluster-ironic:
charm: cs:~openstack-charmers-next/hacluster
num_units: 0
ironic-api:
charm: cs:~openstack-charmers-next/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: ../../../neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1,284 @@
options:
source: &source distro
series: groovy
local_overlay_enabled: false
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:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/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:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
hacluster-ironic:
charm: cs:~openstack-charmers-next/hacluster
num_units: 0
ironic-api:
charm: cs:~openstack-charmers-next/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: ../../../neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -0,0 +1,4 @@
applications:
ironic-api:
options:
vip: '{{ OS_VIP00 }}'

36
src/tests/tests.yaml Normal file
View File

@ -0,0 +1,36 @@
# NOTE(lourot): this is on purpose, so that some tests like
# IronicTest.test_910_pause_resume designed to address ironic-api keep working
# here:
charm_name: ironic-api
gate_bundles:
- groovy-victoria
- focal-victoria
- focal-ussuri
- bionic-train
- bionic-ussuri
smoke_bundles:
- bionic-ussuri
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
tests_options:
force_deploy:
- groovy-victoria

View File

@ -32,6 +32,7 @@ def _fake_retry(num_retries, base_delay=0, exc_type=Exception):
return _retry_on_exception_inner_2 return _retry_on_exception_inner_2
return _retry_on_exception_inner_1 return _retry_on_exception_inner_1
mock.patch( mock.patch(
'charmhelpers.core.decorators.retry_on_exception', 'charmhelpers.core.decorators.retry_on_exception',
_fake_retry).start() _fake_retry).start()

View File

@ -36,12 +36,6 @@ class TestHandlers(test_utils.PatchHelper):
'mechanism_drivers': 'driver1,driver2' 'mechanism_drivers': 'driver1,driver2'
} }
mocked_config = mock.MagicMock()
self.patch_object(handlers, 'config',
name='config',
new=mocked_config)
mocked_config.return_value = 'my_config_value'
handlers.configure_principal() handlers.configure_principal()
principal_charm.configure_plugin.assert_called_once_with( principal_charm.configure_plugin.assert_called_once_with(
neutron_plugin='ironic', neutron_plugin='ironic',