import unittest
import uuid
+from snaps.openstack import create_stack
from snaps.openstack.create_stack import (
StackSettings, StackCreationError, StackError, OpenStackHeatStack)
from snaps.openstack.tests import openstack_tests, create_instance_tests
"""
def setUp(self):
+ self.user_roles = ['heat_stack_owner']
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
self.stack_creator = None
self.image_creator = OpenStackImage(
- self.heat_creds, openstack_tests.cirros_image_settings(
+ self.os_creds, openstack_tests.cirros_image_settings(
name=self.guid + '-image',
image_metadata=self.image_metadata))
self.image_creator.create()
# Create Flavor
+ flavor_config = openstack_tests.get_flavor_config(
+ name=self.guid + '-flavor-name', ram=256, disk=10,
+ vcpus=1, metadata=self.flavor_metadata)
self.flavor_creator = OpenStackFlavor(
- self.admin_os_creds,
- FlavorConfig(
- name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=1))
+ self.admin_os_creds, flavor_config)
self.flavor_creator.create()
self.network_name = self.guid + '-net'
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
created_stack = self.stack_creator.create()
self.assertIsNotNone(created_stack)
self.assertEqual(created_stack.id, retrieved_stack.id)
self.assertEqual(0, len(self.stack_creator.get_outputs()))
+ derived_creator = create_stack.generate_creator(
+ self.os_creds, retrieved_stack,
+ [self.image_creator.image_settings])
+ derived_stack = derived_creator.get_stack()
+ self.assertEqual(retrieved_stack, derived_stack)
+
def test_create_stack_short_timeout(self):
"""
Tests the creation of an OpenStack stack from Heat template file.
env_values=self.env_values, stack_create_timeout=0)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
with self.assertRaises(StackCreationError):
self.stack_creator.create()
template=template_dict,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
created_stack = self.stack_creator.create()
self.assertIsNotNone(created_stack)
template=template_dict,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
created_stack = self.stack_creator.create()
self.assertIsNotNone(created_stack)
template=template_dict,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
created_stack1 = self.stack_creator.create()
retrieved_stack = heat_utils.get_stack_by_id(self.heat_cli,
self.assertEqual(0, len(self.stack_creator.get_outputs()))
# Should be retrieving the instance data
- stack_creator2 = OpenStackHeatStack(self.heat_creds, stack_settings)
+ stack_creator2 = OpenStackHeatStack(self.os_creds, stack_settings)
stack2 = stack_creator2.create()
self.assertEqual(created_stack1.id, stack2.id)
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
created_stack = self.stack_creator.create()
self.assertIsNotNone(created_stack)
# Need to use 'admin' creds as heat creates objects under it's own
# project/tenant
- neutron = neutron_utils.neutron_client(self.admin_os_creds)
- keystone = keystone_utils.keystone_client(self.admin_os_creds)
+ neutron = neutron_utils.neutron_client(
+ self.os_creds, self.os_session)
+ keystone = keystone_utils.keystone_client(
+ self.os_creds, self.os_session)
net_by_name = neutron_utils.get_network(
neutron, keystone, network_name=net_creators[0].get_network().name)
self.assertEqual(net_creators[0].get_network(), net_by_name)
self.assertEqual(1, len(net_creators[0].get_network().subnets))
subnet = net_creators[0].get_network().subnets[0]
subnet_by_name = neutron_utils.get_subnet(
- neutron, subnet_name=subnet.name)
+ neutron, net_creators[0].get_network(), subnet_name=subnet.name)
self.assertEqual(subnet, subnet_by_name)
subnet_by_id = neutron_utils.get_subnet_by_id(neutron, subnet.id)
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
created_stack = self.stack_creator.create()
self.assertIsNotNone(created_stack)
self.assertEqual(self.vm_inst_name,
vm_inst_creators[0].get_vm_inst().name)
- nova = nova_utils.nova_client(self.admin_os_creds)
- neutron = neutron_utils.neutron_client(self.admin_os_creds)
- keystone = keystone_utils.keystone_client(self.admin_os_creds)
+ nova = nova_utils.nova_client(self.os_creds, self.os_session)
+ neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
+ keystone = keystone_utils.keystone_client(self.os_creds, self.os_session)
vm_inst_by_name = nova_utils.get_server(
nova, neutron, keystone,
server_name=vm_inst_creators[0].get_vm_inst().name)
"""
def setUp(self):
+ self.user_roles = ['heat_stack_owner', 'admin']
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
self.stack_creator = None
self.image_creator = OpenStackImage(
- self.heat_creds, openstack_tests.cirros_image_settings(
+ self.os_creds, openstack_tests.cirros_image_settings(
name=self.guid + '-image',
image_metadata=self.image_metadata))
self.image_creator.create()
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings,
+ self.os_creds, stack_settings,
[self.image_creator.image_settings])
created_stack = self.stack_creator.create()
self.assertIsNotNone(created_stack)
vm_settings = vm_inst_creator.instance_settings
self.assertEqual(0, len(vm_settings.floating_ip_settings))
+ def test_connect_via_ssh_heat_vm_derived(self):
+ """
+ Tests the the retrieval of two VM instance creators from a derived
+ OpenStackHeatStack object and attempt to connect via
+ SSH to the first one with a floating IP.
+ """
+ stack_settings = StackConfig(
+ name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
+ template_path=self.heat_tmplt_path,
+ env_values=self.env_values)
+ self.stack_creator = OpenStackHeatStack(
+ self.os_creds, stack_settings,
+ [self.image_creator.image_settings])
+ created_stack = self.stack_creator.create()
+ self.assertIsNotNone(created_stack)
+
+ derived_stack = create_stack.generate_creator(
+ self.os_creds, created_stack,
+ [self.image_creator.image_settings])
+
+ self.vm_inst_creators = derived_stack.get_vm_inst_creators(
+ heat_keypair_option='private_key')
+ self.assertIsNotNone(self.vm_inst_creators)
+ self.assertEqual(2, len(self.vm_inst_creators))
+
+ for vm_inst_creator in self.vm_inst_creators:
+ if vm_inst_creator.get_vm_inst().name == self.vm_inst1_name:
+ self.assertTrue(
+ create_instance_tests.validate_ssh_client(vm_inst_creator))
+ else:
+ vm_settings = vm_inst_creator.instance_settings
+ self.assertEqual(0, len(vm_settings.floating_ip_settings))
+
class CreateStackNestedResourceTests(OSIntegrationTestCase):
"""
"""
def setUp(self):
+ self.user_roles = ['heat_stack_owner']
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
self.stack_creator = None
self.image_creator = OpenStackImage(
- self.heat_creds, openstack_tests.cirros_image_settings(
- name=self.guid + '-image',
+ self.os_creds, openstack_tests.cirros_image_settings(
+ name="{}-{}".format(self.guid, 'image'),
image_metadata=self.image_metadata))
self.image_creator.create()
+ flavor_config = openstack_tests.get_flavor_config(
+ name="{}-{}".format(self.guid, 'flavor-name'), ram=256, disk=10,
+ vcpus=1, metadata=self.flavor_metadata)
self.flavor_creator = OpenStackFlavor(
- self.admin_os_creds,
- FlavorConfig(
- name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=1))
+ self.admin_os_creds, flavor_config)
self.flavor_creator.create()
env_values = {
'snaps.openstack.tests.heat', 'agent.yaml')
stack_settings = StackConfig(
- name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
+ name="{}-{}".format(
+ self.__class__.__name__, str(self.guid) + '-stack'),
template_path=heat_tmplt_path,
resource_files=[heat_resource_path],
env_values=env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings,
+ self.os_creds, stack_settings,
[self.image_creator.image_settings])
self.vm_inst_creators = list()
Instantiates the CreateStack object that is responsible for downloading
and creating an OS stack file within OpenStack
"""
+ self.user_roles = ['heat_stack_owner']
+
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
- self.neutron = neutron_utils.neutron_client(self.os_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
+ self.neutron = neutron_utils.neutron_client(
+ self.os_creds, self.os_session)
self.stack_creator = None
self.net_name = self.guid + '-net'
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
self.created_stack = self.stack_creator.create()
self.assertIsNotNone(self.created_stack)
def setUp(self):
+ self.user_roles = ['heat_stack_owner', 'admin']
+
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
self.stack_creator = None
self.volume_name = self.guid + '-volume'
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
self.created_stack = self.stack_creator.create()
self.assertIsNotNone(self.created_stack)
def setUp(self):
+ self.user_roles = ['heat_stack_owner', 'admin']
+
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
self.stack_creator = None
self.heat_tmplt_path = pkg_resources.resource_filename(
name=self.guid + '-stack',
template_path=self.heat_tmplt_path)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
self.created_stack = self.stack_creator.create()
self.assertIsNotNone(self.created_stack)
def setUp(self):
+ self.user_roles = ['heat_stack_owner']
+
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
- self.nova = nova_utils.nova_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
+ self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
self.stack_creator = None
self.keypair_name = self.guid + '-kp'
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
self.created_stack = self.stack_creator.create()
self.assertIsNotNone(self.created_stack)
Instantiates the CreateStack object that is responsible for downloading
and creating an OS stack file within OpenStack
"""
+ self.user_roles = ['heat_stack_owner']
+
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
- self.nova = nova_utils.nova_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
+ self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
self.stack_creator = None
self.security_group_name = self.guid + '-sec-grp'
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
self.created_stack = self.stack_creator.create()
self.assertIsNotNone(self.created_stack)
"""
def setUp(self):
+ self.user_roles = ['heat_stack_owner']
super(self.__class__, self).__start__()
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
self.stack_name = self.__class__.__name__ + '-' + str(uuid.uuid4())
self.stack_creator = None
self.heat_tmplt_path = pkg_resources.resource_filename(
def tearDown(self):
if self.stack_creator:
self.stack_creator.clean()
+
super(self.__class__, self).__clean__()
def test_missing_dependencies(self):
stack_settings = StackConfig(name=self.stack_name,
template_path=self.heat_tmplt_path)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
with self.assertRaises(HTTPBadRequest):
self.stack_creator.create()
stack_settings = StackConfig(
name=self.stack_name, template_path='foo')
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
with self.assertRaises(IOError):
self.stack_creator.create()
"""
def setUp(self):
+ self.user_roles = ['heat_stack_owner']
super(self.__class__, self).__start__()
self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
- self.heat_creds = self.admin_os_creds
- self.heat_creds.project_name = self.admin_os_creds.project_name
-
- self.heat_cli = heat_utils.heat_client(self.heat_creds)
+ self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
self.stack_creator = None
self.tmp_file = file_utils.save_string_to_file(
' ', str(uuid.uuid4()) + '-bad-image')
self.image_creator = OpenStackImage(
- self.heat_creds, ImageConfig(
+ self.os_creds, ImageConfig(
name=self.guid + 'image', image_file=self.tmp_file.name,
image_user='foo', img_format='qcow2'))
self.image_creator.create()
template_path=self.heat_tmplt_path,
env_values=self.env_values)
self.stack_creator = OpenStackHeatStack(
- self.heat_creds, stack_settings)
+ self.os_creds, stack_settings)
with self.assertRaises(StackError):
try: