Add Rocky, Stein and Train support

Also removed unused/dangling config option and empty test class.

Change-Id: I18b57a85536b4077945fbaf5c1afe95a02d81344
Partial-Bug: #1890628
This commit is contained in:
Aurelien Lourot 2020-07-28 15:17:01 +02:00
parent bee82cf506
commit 69829ab548
17 changed files with 377 additions and 149 deletions

View File

@ -4,10 +4,7 @@ This subordinate charm provides the
[Arista ML2 Plugin][python-networking-arista] support to the
[OpenStack Neutron API service][charm-neutron-api].
> **Notes**:
> * For now the neutron-api-plugin-arista charm is only supported up to
> OpenStack Queens.
> * For upgrading from earlier prototypes of this charm see
> **Note**: For upgrading from earlier prototypes of this charm see
> [Upgrading to stable charm][upgrading-to-stable].
When this charm is related to the neutron-api charm it will install the Arista

View File

@ -4,10 +4,6 @@ options:
type: string
description: |
Repository from which to install. Ex: ppa:canonical-arista/stable
arista-version:
default: '2017.2.2'
type: string
description: Arista Driver version
eapi-host:
default:
type: string

View File

@ -13,16 +13,14 @@ from charmhelpers.fetch import (
)
class NeutronAristaCharm(charms_openstack.charm.OpenStackCharm):
class BaseNeutronAristaCharm(charms_openstack.charm.OpenStackCharm):
abstract_class = True
# Internal name of charm
service_name = name = 'neutron-api-plugin-arista'
# First release supported
release = 'queens'
# List of packages to install for this charm
packages = ['python-networking-arista']
# Package to be used to determine the OpenStack release:
release_pkg = version_package = 'neutron-common'
def install(self):
log('Starting arista installation')
@ -31,3 +29,25 @@ class NeutronAristaCharm(charms_openstack.charm.OpenStackCharm):
add_source(config('source'))
apt_update(fatal=True)
apt_install(self.packages[0], fatal=True)
class QueensNeutronAristaCharm(BaseNeutronAristaCharm):
"""The Queens incarnation of the charm."""
abstract_class = False
release = 'queens'
python_version = 2
# List of packages to install for this charm
packages = ['python-networking-arista']
class RockyNeutronAristaCharm(BaseNeutronAristaCharm):
"""The Rocky incarnation of the charm."""
abstract_class = False
release = 'rocky'
python_version = 3
# List of packages to install for this charm
packages = ['python3-networking-arista']

View File

@ -25,7 +25,10 @@ from charms_openstack.charm import (
)
use_defaults('update-status')
use_defaults(
'charm.default-select-release',
'update-status',
)
@reactive.when_not('arista-package.installed')

View File

@ -1,14 +1,21 @@
series: bionic
variables:
openstack-origin: &openstack-origin distro
series: &series bionic
applications:
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
mysql:
charm: cs:~openstack-charmers-next/percona-cluster
@ -18,6 +25,7 @@ applications:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
options:
openstack-origin: *openstack-origin
enable-ml2-dns: False
flat-network-providers: default
vlan-ranges: default:1000:3000
@ -49,6 +57,7 @@ applications:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
openstack-origin: *openstack-origin
network-manager: Neutron
neutron-api-plugin-arista:
@ -67,6 +76,7 @@ applications:
num_units: 2
constraints: mem=4G cores=4
options:
openstack-origin: *openstack-origin
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
@ -76,10 +86,6 @@ applications:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
openstack-dashboard:
charm: cs:openstack-dashboard
num_units: 1
lldpd:
charm: cs:lldpd
options:
@ -131,9 +137,5 @@ relations:
- neutron-api-plugin-arista
- - neutron-api:neutron-plugin-api-subordinate
- neutron-api-plugin-arista:neutron-plugin-api-subordinate
- - openstack-dashboard
- mysql
- - openstack-dashboard:identity-service
- keystone:identity-service
- - lldpd
- nova-compute

View File

@ -1,4 +1,7 @@
series: bionic
variables:
openstack-origin: &openstack-origin cloud:bionic-rocky
series: &series bionic
applications:
@ -6,13 +9,13 @@ applications:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
openstack-origin: *openstack-origin
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
openstack-origin: *openstack-origin
mysql:
charm: cs:~openstack-charmers-next/percona-cluster
@ -22,7 +25,7 @@ applications:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
openstack-origin: *openstack-origin
enable-ml2-dns: False
flat-network-providers: default
vlan-ranges: default:1000:3000
@ -54,13 +57,16 @@ applications:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
openstack-origin: *openstack-origin
network-manager: Neutron
neutron-api-plugin-arista:
charm: ../../../neutron-api-plugin-arista
num_units: 0
options:
# Contains fix https://review.opendev.org/743740
source: ppa:aurelien-lourot/arista-rocky
# Fake IP, will be set to arista-virt-test-fixture's IP address on test
# setup:
eapi-host: 192.0.2.42
@ -73,7 +79,7 @@ applications:
num_units: 2
constraints: mem=4G cores=4
options:
openstack-origin: cloud:bionic-rocky
openstack-origin: *openstack-origin
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
@ -83,12 +89,6 @@ applications:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
openstack-dashboard:
charm: cs:openstack-dashboard
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
lldpd:
charm: cs:lldpd
options:
@ -140,9 +140,5 @@ relations:
- neutron-api-plugin-arista
- - neutron-api:neutron-plugin-api-subordinate
- neutron-api-plugin-arista:neutron-plugin-api-subordinate
- - openstack-dashboard
- mysql
- - openstack-dashboard:identity-service
- keystone:identity-service
- - lldpd
- nova-compute

View File

@ -0,0 +1,144 @@
variables:
openstack-origin: &openstack-origin cloud:bionic-stein
series: &series bionic
applications:
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
mysql:
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
options:
openstack-origin: *openstack-origin
enable-ml2-dns: False
flat-network-providers: default
vlan-ranges: default:1000:3000
vni-ranges: 1001:2000
neutron-security-groups: True
overlay-network-type: vxlan
use-internal-endpoints: True
enable-l3ha: True
dhcp-agents-per-network: 2
enable-ml2-port-security: True
default-tenant-network-type: vlan
l2-population: False
ipv4-ptr-zone-prefix-size:
reverse-dns-lookup: False
dns-domain:
manage-neutron-plugin-legacy-mode: False
neutron-openvswitch:
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
prevent-arp-spoofing: True
firewall-driver: openvswitch
enable-local-dhcp-and-metadata: True
bridge-mappings: default:br-data
data-port: ens7
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
openstack-origin: *openstack-origin
network-manager: Neutron
neutron-api-plugin-arista:
charm: ../../../neutron-api-plugin-arista
num_units: 0
options:
# Contains fix https://review.opendev.org/743740
source: ppa:aurelien-lourot/arista-stein
# Fake IP, will be set to arista-virt-test-fixture's IP address on test
# setup:
eapi-host: 192.0.2.42
eapi-username: admin
eapi-password: password123
api-type: EAPI
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
constraints: mem=4G cores=4
options:
openstack-origin: *openstack-origin
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
lldpd:
charm: cs:lldpd
options:
interfaces-regex: 'en*'
short-name: true
arista-virt-test-fixture:
charm: cs:~openstack-charmers-next/arista-virt-test-fixture
num_units: 1
relations:
- - nova-compute: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-openvswitch:neutron-plugin-api
- neutron-api:neutron-plugin-api
- - neutron-api:shared-db
- mysql:shared-db
- - neutron-api:amqp
- rabbitmq-server:amqp
- - glance:shared-db
- mysql:shared-db
- - glance:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:image-service
- glance:image-service
- - nova-compute:image-service
- glance:image-service
- - nova-cloud-controller:cloud-compute
- nova-compute:cloud-compute
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-compute:neutron-plugin
- neutron-openvswitch:neutron-plugin
- - neutron-openvswitch:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:shared-db
- mysql:shared-db
- - nova-cloud-controller:neutron-api
- neutron-api:neutron-api
- - neutron-api
- neutron-api-plugin-arista
- - neutron-api:neutron-plugin-api-subordinate
- neutron-api-plugin-arista:neutron-plugin-api-subordinate
- - lldpd
- nova-compute

View File

@ -0,0 +1,156 @@
variables:
openstack-origin: &openstack-origin cloud:bionic-train
series: &series bionic
applications:
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
mysql:
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
options:
openstack-origin: *openstack-origin
enable-ml2-dns: False
flat-network-providers: default
vlan-ranges: default:1000:3000
vni-ranges: 1001:2000
neutron-security-groups: True
overlay-network-type: vxlan
use-internal-endpoints: True
enable-l3ha: True
dhcp-agents-per-network: 2
enable-ml2-port-security: True
default-tenant-network-type: vlan
l2-population: False
ipv4-ptr-zone-prefix-size:
reverse-dns-lookup: False
dns-domain:
manage-neutron-plugin-legacy-mode: False
neutron-openvswitch:
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
prevent-arp-spoofing: True
firewall-driver: openvswitch
enable-local-dhcp-and-metadata: True
bridge-mappings: default:br-data
data-port: ens7
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
openstack-origin: *openstack-origin
network-manager: Neutron
neutron-api-plugin-arista:
charm: ../../../neutron-api-plugin-arista
num_units: 0
options:
# Contains fix https://review.opendev.org/743740
source: ppa:aurelien-lourot/arista-train
# Fake IP, will be set to arista-virt-test-fixture's IP address on test
# setup:
eapi-host: 192.0.2.42
eapi-username: admin
eapi-password: password123
api-type: EAPI
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
constraints: mem=4G cores=4
options:
openstack-origin: *openstack-origin
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
lldpd:
charm: cs:lldpd
options:
interfaces-regex: 'en*'
short-name: true
arista-virt-test-fixture:
charm: cs:~openstack-charmers-next/arista-virt-test-fixture
num_units: 1
relations:
- - nova-compute: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-openvswitch:neutron-plugin-api
- neutron-api:neutron-plugin-api
- - neutron-api:shared-db
- mysql:shared-db
- - neutron-api:amqp
- rabbitmq-server:amqp
- - glance:shared-db
- mysql:shared-db
- - glance:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:image-service
- glance:image-service
- - nova-compute:image-service
- glance:image-service
- - nova-cloud-controller:cloud-compute
- nova-compute:cloud-compute
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-compute:neutron-plugin
- neutron-openvswitch:neutron-plugin
- - neutron-openvswitch:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:shared-db
- mysql:shared-db
- - nova-cloud-controller:neutron-api
- neutron-api:neutron-api
- - neutron-api
- neutron-api-plugin-arista
- - neutron-api:neutron-plugin-api-subordinate
- neutron-api-plugin-arista:neutron-plugin-api-subordinate
- - lldpd
- nova-compute
- - placement:shared-db
- mysql:shared-db
- - placement:identity-service
- keystone:identity-service
- - placement:placement
- nova-cloud-controller:placement

View File

@ -0,0 +1,4 @@
applications:
arista-virt-test-fixture:
resources:
arista-image: '{{ TEST_ARISTA_IMAGE_LOCAL }}'

View File

@ -1,4 +0,0 @@
applications:
arista-virt-test-fixture:
resources:
arista-image: '{{ TEST_ARISTA_IMAGE_LOCAL }}'

View File

@ -0,0 +1 @@
arista-virt-test-fixture-image.yaml.j2

View File

@ -1,4 +0,0 @@
applications:
arista-virt-test-fixture:
resources:
arista-image: '{{ TEST_ARISTA_IMAGE_LOCAL }}'

View File

@ -0,0 +1 @@
arista-virt-test-fixture-image.yaml.j2

View File

@ -0,0 +1 @@
arista-virt-test-fixture-image.yaml.j2

View File

@ -0,0 +1 @@
arista-virt-test-fixture-image.yaml.j2

View File

@ -1,4 +0,0 @@
applications:
arista-virt-test-fixture:
resources:
arista-image: '{{ TEST_ARISTA_IMAGE_LOCAL }}'

View File

@ -0,0 +1 @@
arista-virt-test-fixture-image.yaml.j2

View File

@ -1,4 +1,7 @@
series: xenial
variables:
openstack-origin: &openstack-origin cloud:xenial-queens
series: &series xenial
applications:
@ -6,13 +9,13 @@ applications:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: cloud:xenial-queens
openstack-origin: *openstack-origin
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: cloud:xenial-queens
openstack-origin: *openstack-origin
mysql:
charm: cs:~openstack-charmers-next/percona-cluster
@ -22,7 +25,7 @@ applications:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
options:
openstack-origin: cloud:xenial-queens
openstack-origin: *openstack-origin
enable-ml2-dns: False
flat-network-providers: default
vlan-ranges: default:1000:3000
@ -54,7 +57,7 @@ applications:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
openstack-origin: cloud:xenial-queens
openstack-origin: *openstack-origin
network-manager: Neutron
neutron-api-plugin-arista:
@ -73,7 +76,7 @@ applications:
num_units: 2
constraints: mem=4G cores=4
options:
openstack-origin: cloud:xenial-queens
openstack-origin: *openstack-origin
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
@ -83,12 +86,6 @@ applications:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
openstack-dashboard:
charm: cs:openstack-dashboard
num_units: 1
options:
openstack-origin: cloud:xenial-queens
lldpd:
charm: cs:lldpd
options:
@ -140,9 +137,5 @@ relations:
- neutron-api-plugin-arista
- - neutron-api:neutron-plugin-api-subordinate
- neutron-api-plugin-arista:neutron-plugin-api-subordinate
- - openstack-dashboard
- mysql
- - openstack-dashboard:identity-service
- keystone:identity-service
- - lldpd
- nova-compute

View File

@ -1,14 +1,12 @@
charm_name: neutron-api-plugin-arista
smoke_bundles:
- bionic-queens
- bionic-train
gate_bundles:
- xenial-queens
- bionic-queens
# NOTE(lourot): on bionic-rocky neutron-server fails to start with:
# neutron.plugins.ml2.managers The following mechanism drivers were not found: set(['hyperv'])
# Disabling for now. To be investigated.
#- bionic-rocky
- bionic-rocky
- bionic-stein
- bionic-train
before_deploy:
- zaza.openstack.charm_tests.neutron_arista.setup.download_arista_image

View File

@ -1,74 +0,0 @@
# Copyright 2016 Canonical Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
from __future__ import print_function
import unittest
import mock
def FakeConfig(init_dict):
def _config(key=None):
return init_dict[key] if key else init_dict
return _config
class Helper(unittest.TestCase):
def setUp(self):
self._patches = {}
self._patches_start = {}
self.ch_config_patch = mock.patch('charmhelpers.core.hookenv.config')
self.ch_config = self.ch_config_patch.start()
self.ch_config.side_effect = lambda: {'ssl_param': None}
def tearDown(self):
for k, v in self._patches.items():
v.stop()
setattr(self, k, None)
self._patches = None
self._patches_start = None
self.ch_config_patch.stop()
def patch(self, obj, attr, return_value=None, **kwargs):
mocked = mock.patch.object(obj, attr, **kwargs)
self._patches[attr] = mocked
started = mocked.start()
started.return_value = return_value
self._patches_start[attr] = started
setattr(self, attr, started)
def patch_object(self, obj, attr, return_value=None, name=None, new=None):
if name is None:
name = attr
if new is not None:
mocked = mock.patch.object(obj, attr, new=new)
else:
mocked = mock.patch.object(obj, attr)
self._patches[name] = mocked
started = mocked.start()
if new is None:
started.return_value = return_value
self._patches_start[name] = started
setattr(self, name, started)
class TestNeutronAristaCharm(Helper):
def test_write_config(self):
pass