Browse Source

Merge "Add Ubuntu image and flavor fixtures"

changes/03/669203/31
Zuul 2 years ago
committed by Gerrit Code Review
parent
commit
828f8a420b
  1. 6
      tobiko/openstack/glance/config.py
  2. 19
      tobiko/openstack/images/__init__.py
  3. 34
      tobiko/openstack/images/_cirros.py
  4. 5
      tobiko/openstack/stacks/__init__.py
  5. 49
      tobiko/openstack/stacks/_ubuntu.py
  6. 34
      tobiko/tests/functional/openstack/stacks/test_ubuntu.py

6
tobiko/openstack/glance/config.py

@ -20,6 +20,10 @@ CIRROS_IMAGE_URL = \
'http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img'
GLANCE_IMAGE_NAMES = ['cirros',
'ubuntu']
def register_tobiko_options(conf):
conf.register_opts(
group=cfg.OptGroup('glance'),
@ -28,7 +32,7 @@ def register_tobiko_options(conf):
help=("Default directory where to look for image "
"files")), ])
for name in ['CirrOS']:
for name in GLANCE_IMAGE_NAMES:
group_name = name.lower()
conf.register_opts(
group=cfg.OptGroup(group_name),

19
tobiko/openstack/images/__init__.py

@ -1,19 +0,0 @@
# Copyright 2019 Red Hat
#
# 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 tobiko.openstack.images import _cirros
CirrosGlanceImageFixture = _cirros.CirrosGlanceImageFixture

34
tobiko/openstack/images/_cirros.py

@ -1,34 +0,0 @@
# Copyright 2019 Red Hat
#
# 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 tobiko import config
from tobiko.openstack import glance
CONF = config.CONF
CIRROS_IMAGE_URL = \
'http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img'
class CirrosGlanceImageFixture(glance.URLGlanceImageFixture):
image_url = CONF.tobiko.cirros.image_url or CIRROS_IMAGE_URL
image_name = CONF.tobiko.cirros.image_name
image_file = CONF.tobiko.cirros.image_file
container_format = CONF.tobiko.cirros.container_format or "bare"
disk_format = CONF.tobiko.cirros.disk_format or "raw"
username = CONF.tobiko.cirros.username or 'cirros'
password = CONF.tobiko.cirros.password or 'gocubsgo'

5
tobiko/openstack/stacks/__init__.py

@ -18,6 +18,7 @@ from __future__ import absolute_import
from tobiko.openstack.stacks import _cirros
from tobiko.openstack.stacks import _neutron
from tobiko.openstack.stacks import _nova
from tobiko.openstack.stacks import _ubuntu
CirrosFlavorStackFixture = _cirros.CirrosFlavorStackFixture
CirrosImageFixture = _cirros.CirrosImageFixture
@ -31,3 +32,7 @@ SecurityGroupsFixture = _neutron.SecurityGroupsFixture
ServerStackFixture = _nova.ServerStackFixture
KeyPairStackFixture = _nova.KeyPairStackFixture
FlavorStackFixture = _nova.FlavorStackFixture
UbuntuFlavorStackFixture = _ubuntu.UbuntuFlavorStackFixture
UbuntuImageFixture = _ubuntu.UbuntuImageFixture
UbuntuServerStackFixture = _ubuntu.UbuntuServerStackFixture

49
tobiko/openstack/stacks/_ubuntu.py

@ -0,0 +1,49 @@
# Copyright 2019 Red Hat
#
# 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
import tobiko
from tobiko import config
from tobiko.openstack import glance
from tobiko.openstack.stacks import _nova
CONF = config.CONF
UBUNTU_IMAGE_URL = \
('http://cloud-images.ubuntu.com/bionic/current/'
'bionic-server-cloudimg-amd64.img')
class UbuntuImageFixture(glance.URLGlanceImageFixture):
image_url = CONF.tobiko.ubuntu.image_url or UBUNTU_IMAGE_URL
image_name = CONF.tobiko.ubuntu.image_name
image_file = CONF.tobiko.ubuntu.image_file
disk_format = CONF.tobiko.ubuntu.disk_format or "qcow2"
container_format = CONF.tobiko.ubuntu.container_format or "bare"
username = CONF.tobiko.ubuntu.username or 'ubuntu'
password = CONF.tobiko.ubuntu.password
class UbuntuFlavorStackFixture(_nova.FlavorStackFixture):
ram = 512
class UbuntuServerStackFixture(_nova.ServerStackFixture):
#: Glance image used to create a Nova server instance
image_fixture = tobiko.required_setup_fixture(UbuntuImageFixture)
#: Glance image used to create a Nova server instance
flavor_stack = tobiko.required_setup_fixture(UbuntuFlavorStackFixture)

34
tobiko/tests/functional/openstack/stacks/test_ubuntu.py

@ -0,0 +1,34 @@
# Copyright (c) 2019 Red Hat, Inc.
#
# All Rights Reserved.
#
# 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
import tobiko
from tobiko.shell import sh
from tobiko.openstack import stacks
from tobiko.tests.functional.openstack.stacks import test_cirros
class UbuntuServerStackTest(test_cirros.CirrosServerStackTest):
"""Tests connectivity to Nova instances via floating IPs"""
#: Stack of resources with a server attached to a floating IP
stack = tobiko.required_setup_fixture(stacks.UbuntuServerStackFixture)
def test_python(self):
python_version = sh.execute(['python3', '--version'],
ssh_client=self.stack.ssh_client).stdout
self.assertTrue(python_version.startswith('Python 3.'),
python_version)
Loading…
Cancel
Save