diff --git a/tobiko/openstack/glance/config.py b/tobiko/openstack/glance/config.py index 49adfb972..e3607da5b 100644 --- a/tobiko/openstack/glance/config.py +++ b/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), diff --git a/tobiko/openstack/images/__init__.py b/tobiko/openstack/images/__init__.py deleted file mode 100644 index 5a079e754..000000000 --- a/tobiko/openstack/images/__init__.py +++ /dev/null @@ -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 diff --git a/tobiko/openstack/images/_cirros.py b/tobiko/openstack/images/_cirros.py deleted file mode 100644 index 14d3d97c3..000000000 --- a/tobiko/openstack/images/_cirros.py +++ /dev/null @@ -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' diff --git a/tobiko/openstack/stacks/__init__.py b/tobiko/openstack/stacks/__init__.py index 8083d46ac..d1b7ae6c2 100644 --- a/tobiko/openstack/stacks/__init__.py +++ b/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 diff --git a/tobiko/openstack/stacks/_ubuntu.py b/tobiko/openstack/stacks/_ubuntu.py new file mode 100644 index 000000000..a2f8c71f7 --- /dev/null +++ b/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) diff --git a/tobiko/tests/functional/openstack/stacks/test_ubuntu.py b/tobiko/tests/functional/openstack/stacks/test_ubuntu.py new file mode 100644 index 000000000..195c4de5e --- /dev/null +++ b/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)