summaryrefslogtreecommitdiffstats
path: root/snaps/provisioning
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-06-22 12:43:09 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-06-22 14:28:08 -0600
commitc7ba89444d160cb81656a49cb93416ee5013aa8f (patch)
tree0f46d74f98e17e256c3e1eb9a592c3bcc29044e8 /snaps/provisioning
parentdbfb9c4e94e500592a8b93f42b7b87230d0af311 (diff)
Use neutron to create floating IPs.
This patch moves the floating IP creation out of nova and into neutron. Other changes include the use of domain objects for VM and Floating IP instances, addition of new nova_utils tests to exercise the create server functionality, and more PEP8 compliance. JIRA: SNAPS-92 Change-Id: I16c12b26b56008901633e90ae307586ad2045f9b Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/provisioning')
-rw-r--r--snaps/provisioning/tests/ansible_utils_tests.py128
1 files changed, 84 insertions, 44 deletions
diff --git a/snaps/provisioning/tests/ansible_utils_tests.py b/snaps/provisioning/tests/ansible_utils_tests.py
index cddedcd..733068f 100644
--- a/snaps/provisioning/tests/ansible_utils_tests.py
+++ b/snaps/provisioning/tests/ansible_utils_tests.py
@@ -13,21 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import uuid
+
import os
import pkg_resources
-import uuid
from scp import SCPClient
-from snaps.openstack.create_security_group import SecurityGroupRuleSettings, Direction, Protocol, \
- OpenStackSecurityGroup, SecurityGroupSettings
-
from snaps.openstack import create_flavor
-from snaps.openstack import create_instance
from snaps.openstack import create_image
+from snaps.openstack import create_instance
from snaps.openstack import create_keypairs
from snaps.openstack import create_network
from snaps.openstack import create_router
+from snaps.openstack.create_security_group import (
+ SecurityGroupRuleSettings, Direction, Protocol, OpenStackSecurityGroup,
+ SecurityGroupSettings)
from snaps.openstack.tests import openstack_tests, create_instance_tests
from snaps.openstack.tests.os_source_file_test import OSIntegrationTestCase
+from snaps.openstack.utils import nova_utils
from snaps.provisioning import ansible_utils
VM_BOOT_TIMEOUT = 600
@@ -38,16 +40,19 @@ ip_2 = '10.0.1.200'
class AnsibleProvisioningTests(OSIntegrationTestCase):
"""
- Test for the CreateInstance class with two NIC/Ports, eth0 with floating IP and eth1 w/o
+ Test for the CreateInstance class with two NIC/Ports, eth0 with floating IP
+ and eth1 w/o
"""
def setUp(self):
"""
- Instantiates the CreateImage object that is responsible for downloading and creating an OS image file
- within OpenStack
+ Instantiates the CreateImage object that is responsible for downloading
+ and creating an OS image file within OpenStack
"""
super(self.__class__, self).__start__()
+ self.nova = nova_utils.nova_client(self.os_creds)
+
guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
self.keypair_priv_filepath = 'tmp/' + guid
self.keypair_pub_filepath = self.keypair_priv_filepath + '.pub'
@@ -69,62 +74,78 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
try:
# Create Image
- os_image_settings = openstack_tests.ubuntu_image_settings(name=guid + '-' + '-image',
- image_metadata=self.image_metadata)
- self.image_creator = create_image.OpenStackImage(self.os_creds, os_image_settings)
+ os_image_settings = openstack_tests.ubuntu_image_settings(
+ name=guid + '-' + '-image',
+ image_metadata=self.image_metadata)
+ self.image_creator = create_image.OpenStackImage(self.os_creds,
+ os_image_settings)
self.image_creator.create()
# First network is public
self.pub_net_config = openstack_tests.get_pub_net_config(
net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
- router_name=guid + '-pub-router', external_net=self.ext_net_name)
+ router_name=guid + '-pub-router',
+ external_net=self.ext_net_name)
- self.network_creator = create_network.OpenStackNetwork(self.os_creds, self.pub_net_config.network_settings)
+ self.network_creator = create_network.OpenStackNetwork(
+ self.os_creds, self.pub_net_config.network_settings)
self.network_creator.create()
# Create routers
- self.router_creator = create_router.OpenStackRouter(self.os_creds, self.pub_net_config.router_settings)
+ self.router_creator = create_router.OpenStackRouter(
+ self.os_creds, self.pub_net_config.router_settings)
self.router_creator.create()
# Create Flavor
self.flavor_creator = create_flavor.OpenStackFlavor(
self.admin_os_creds,
- create_flavor.FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2,
+ create_flavor.FlavorSettings(name=guid + '-flavor-name',
+ ram=2048, disk=10, vcpus=2,
metadata=self.flavor_metadata))
self.flavor_creator.create()
# Create Key/Pair
self.keypair_creator = create_keypairs.OpenStackKeypair(
self.os_creds, create_keypairs.KeypairSettings(
- name=self.keypair_name, public_filepath=self.keypair_pub_filepath,
+ name=self.keypair_name,
+ public_filepath=self.keypair_pub_filepath,
private_filepath=self.keypair_priv_filepath))
self.keypair_creator.create()
# Create Security Group
sec_grp_name = guid + '-sec-grp'
- rule1 = SecurityGroupRuleSettings(sec_grp_name=sec_grp_name, direction=Direction.ingress,
+ rule1 = SecurityGroupRuleSettings(sec_grp_name=sec_grp_name,
+ direction=Direction.ingress,
protocol=Protocol.icmp)
- rule2 = SecurityGroupRuleSettings(sec_grp_name=sec_grp_name, direction=Direction.ingress,
- protocol=Protocol.tcp, port_range_min=22, port_range_max=22)
+ rule2 = SecurityGroupRuleSettings(sec_grp_name=sec_grp_name,
+ direction=Direction.ingress,
+ protocol=Protocol.tcp,
+ port_range_min=22,
+ port_range_max=22)
self.sec_grp_creator = OpenStackSecurityGroup(
self.os_creds,
- SecurityGroupSettings(name=sec_grp_name, rule_settings=[rule1, rule2]))
+ SecurityGroupSettings(name=sec_grp_name,
+ rule_settings=[rule1, rule2]))
self.sec_grp_creator.create()
# Create instance
ports_settings = list()
ports_settings.append(
- create_network.PortSettings(name=self.port_1_name,
- network_name=self.pub_net_config.network_settings.name))
+ create_network.PortSettings(
+ name=self.port_1_name,
+ network_name=self.pub_net_config.network_settings.name))
instance_settings = create_instance.VmInstanceSettings(
- name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=ports_settings,
+ name=self.vm_inst_name,
+ flavor=self.flavor_creator.flavor_settings.name,
+ port_settings=ports_settings,
floating_ip_settings=[create_instance.FloatingIpSettings(
name=self.floating_ip_name, port_name=self.port_1_name,
router_name=self.pub_net_config.router_settings.name)])
self.inst_creator = create_instance.OpenStackVmInstance(
- self.os_creds, instance_settings, self.image_creator.image_settings,
+ self.os_creds, instance_settings,
+ self.image_creator.image_settings,
keypair_settings=self.keypair_creator.keypair_settings)
except:
self.tearDown()
@@ -165,10 +186,13 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
def test_apply_simple_playbook(self):
"""
- Tests application of an Ansible playbook that simply copies over a file:
- 1. Have a ~/.ansible.cfg (or alternate means) to set host_key_checking = False
- 2. Set the following environment variable in your executing shell: ANSIBLE_HOST_KEY_CHECKING=False
- Should this not be performed, the creation of the host ssh key will cause your ansible calls to fail.
+ Tests application of an Ansible playbook that simply copies over a file
+ 1. Have a ~/.ansible.cfg (or alternate means) to
+ set host_key_checking = False
+ 2. Set the following environment variable in your executing shell:
+ ANSIBLE_HOST_KEY_CHECKING=False
+ Should this not be performed, the creation of the host ssh key will
+ cause your ansible calls to fail.
"""
vm = self.inst_creator.create(block=True)
@@ -176,10 +200,12 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
self.assertTrue(self.inst_creator.vm_ssh_active(block=True))
priv_ip = self.inst_creator.get_port_ip(self.port_1_name)
- self.assertTrue(create_instance_tests.check_dhcp_lease(vm, priv_ip))
+ self.assertTrue(create_instance_tests.check_dhcp_lease(
+ self.nova, vm, priv_ip))
# Apply Security Group
- self.inst_creator.add_security_group(self.sec_grp_creator.get_security_group())
+ self.inst_creator.add_security_group(
+ self.sec_grp_creator.get_security_group())
ssh_client = self.inst_creator.ssh_client()
self.assertIsNotNone(ssh_client)
@@ -187,16 +213,19 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
self.assertIsNotNone(out)
self.assertGreater(len(out), 1)
- # Need to use the first floating IP as subsequent ones are currently broken with Apex CO
+ # Need to use the first floating IP as subsequent ones are currently
+ # broken with Apex CO
ip = self.inst_creator.get_floating_ip().ip
user = self.inst_creator.get_image_user()
priv_key = self.inst_creator.keypair_settings.private_filepath
- relative_pb_path = pkg_resources.resource_filename('snaps.provisioning.tests.playbooks', 'simple_playbook.yml')
+ relative_pb_path = pkg_resources.resource_filename(
+ 'snaps.provisioning.tests.playbooks', 'simple_playbook.yml')
retval = self.inst_creator.apply_ansible_playbook(relative_pb_path)
self.assertEqual(0, retval)
- ssh = ansible_utils.ssh_client(ip, user, priv_key, self.os_creds.proxy_settings)
+ ssh = ansible_utils.ssh_client(ip, user, priv_key,
+ self.os_creds.proxy_settings)
self.assertIsNotNone(ssh)
scp = SCPClient(ssh.get_transport())
scp.get('~/hello.txt', self.test_file_local_path)
@@ -209,10 +238,14 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
def test_apply_template_playbook(self):
"""
- Tests application of an Ansible playbook that applies a template to a file:
- 1. Have a ~/.ansible.cfg (or alternate means) to set host_key_checking = False
- 2. Set the following environment variable in your executing shell: ANSIBLE_HOST_KEY_CHECKING=False
- Should this not be performed, the creation of the host ssh key will cause your ansible calls to fail.
+ Tests application of an Ansible playbook that applies a template to a
+ file:
+ 1. Have a ~/.ansible.cfg (or alternate means) to set
+ host_key_checking = False
+ 2. Set the following environment variable in your executing shell:
+ ANSIBLE_HOST_KEY_CHECKING=False
+ Should this not be performed, the creation of the host ssh key will
+ cause your ansible calls to fail.
"""
vm = self.inst_creator.create(block=True)
@@ -220,22 +253,29 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
self.assertTrue(self.inst_creator.vm_ssh_active(block=True))
priv_ip = self.inst_creator.get_port_ip(self.port_1_name)
- self.assertTrue(create_instance_tests.check_dhcp_lease(vm, priv_ip))
+ self.assertTrue(create_instance_tests.check_dhcp_lease(
+ self.nova, vm, priv_ip))
# Apply Security Group
- self.inst_creator.add_security_group(self.sec_grp_creator.get_security_group())
+ self.inst_creator.add_security_group(
+ self.sec_grp_creator.get_security_group())
- # Need to use the first floating IP as subsequent ones are currently broken with Apex CO
+ # Need to use the first floating IP as subsequent ones are currently
+ # broken with Apex CO
ip = self.inst_creator.get_floating_ip().ip
user = self.inst_creator.get_image_user()
priv_key = self.inst_creator.keypair_settings.private_filepath
- relative_pb_path = pkg_resources.resource_filename('snaps.provisioning.tests.playbooks',
- 'template_playbook.yml')
- retval = self.inst_creator.apply_ansible_playbook(relative_pb_path, variables={'name': 'Foo'})
+ relative_pb_path = pkg_resources.resource_filename(
+ 'snaps.provisioning.tests.playbooks',
+ 'template_playbook.yml')
+ retval = self.inst_creator.apply_ansible_playbook(relative_pb_path,
+ variables={
+ 'name': 'Foo'})
self.assertEqual(0, retval)
- ssh = ansible_utils.ssh_client(ip, user, priv_key, self.os_creds.proxy_settings)
+ ssh = ansible_utils.ssh_client(ip, user, priv_key,
+ self.os_creds.proxy_settings)
self.assertIsNotNone(ssh)
scp = SCPClient(ssh.get_transport())
scp.get('/tmp/hello.txt', self.test_file_local_path)