-
- self.creators = list()
-
- if hasattr(CONST, 'snaps_images_cirros'):
- self.cirros_image_config = CONST.__getattribute__(
- 'snaps_images_cirros')
- else:
- self.cirros_image_config = None
-
- def create(self, use_custom_images=False, use_custom_flavors=False,
- create_project=False):
- if create_project:
- logger.debug("Creating project (tenant) for Tempest suite")
- project_name = CONST.__getattribute__(
- 'tempest_identity_tenant_name') + self.guid
- project_creator = deploy_utils.create_project(
- self.os_creds, ProjectConfig(
- name=project_name,
- description=CONST.__getattribute__(
- 'tempest_identity_tenant_description')))
- if (project_creator is None or
- project_creator.get_project() is None):
- raise Exception("Failed to create tenant")
- project_id = project_creator.get_project().id
- self.creators.append(project_creator)
-
- logger.debug("Creating user for Tempest suite")
- user_creator = deploy_utils.create_user(
- self.os_creds, UserConfig(
- name=CONST.__getattribute__(
- 'tempest_identity_user_name') + self.guid,
- password=CONST.__getattribute__(
- 'tempest_identity_user_password'),
- project_name=project_name))
- if user_creator is None or user_creator.get_user() is None:
- raise Exception("Failed to create user")
- user_id = user_creator.get_user().id
- self.creators.append(user_creator)
- else:
- project_name = None
- project_id = None
- user_id = None
-
- logger.debug("Creating private network for Tempest suite")
- network_creator = deploy_utils.create_network(
- self.os_creds, NetworkConfig(
- name=CONST.__getattribute__(
- 'tempest_private_net_name') + self.guid,
- project_name=project_name,
- subnet_settings=[SubnetConfig(
- name=CONST.__getattribute__(
- 'tempest_private_subnet_name') + self.guid,
- cidr=CONST.__getattribute__('tempest_private_subnet_cidr'))
- ]))
- if network_creator is None or network_creator.get_network() is None:
- raise Exception("Failed to create private network")
- self.creators.append(network_creator)
-
- image_id = None
- image_id_alt = None
- flavor_id = None
- flavor_id_alt = None
-
- logger.debug("Creating image for Tempest suite")
- image_base_name = CONST.__getattribute__(
- 'openstack_image_name') + self.guid
- os_image_settings = openstack_tests.cirros_image_settings(
- image_base_name, public=True,
- image_metadata=self.cirros_image_config)
- logger.debug("Creating image for Tempest suite")
- image_creator = deploy_utils.create_image(
- self.os_creds, os_image_settings)
- if image_creator is None:
- raise Exception('Failed to create image')
- self.creators.append(image_creator)
- image_id = image_creator.get_image().id
-
- if use_custom_images:
- logger.debug("Creating 2nd image for Tempest suite")
- image_base_name_alt = CONST.__getattribute__(
- 'openstack_image_name_alt') + self.guid
- os_image_settings_alt = openstack_tests.cirros_image_settings(
- image_base_name_alt, public=True,
- image_metadata=self.cirros_image_config)
- logger.debug("Creating 2nd image for Tempest suite")
- image_creator_alt = deploy_utils.create_image(
- self.os_creds, os_image_settings_alt)
- if image_creator_alt is None:
- raise Exception('Failed to create image')
- self.creators.append(image_creator_alt)
- image_id_alt = image_creator_alt.get_image().id
-
- if (CONST.__getattribute__('tempest_use_custom_flavors') == 'True' or
- use_custom_flavors):
- logger.info("Creating flavor for Tempest suite")
- scenario = CONST.__getattribute__('DEPLOY_SCENARIO')
- flavor_metadata = None
- if 'ovs' in scenario or 'fdio' in scenario:
- flavor_metadata = create_flavor.MEM_PAGE_SIZE_LARGE
- flavor_creator = OpenStackFlavor(
- self.os_creds, FlavorConfig(
- name=CONST.__getattribute__(
- 'openstack_flavor_name') + self.guid,
- ram=CONST.__getattribute__('openstack_flavor_ram'),
- disk=CONST.__getattribute__('openstack_flavor_disk'),
- vcpus=CONST.__getattribute__('openstack_flavor_vcpus'),
- metadata=flavor_metadata))
- flavor = flavor_creator.create()
- if flavor is None:
- raise Exception('Failed to create flavor')
- self.creators.append(flavor_creator)
- flavor_id = flavor.id
-
- if use_custom_flavors:
- logger.info("Creating 2nd flavor for Tempest suite")
- scenario = CONST.__getattribute__('DEPLOY_SCENARIO')
- flavor_metadata_alt = None
- if 'ovs' in scenario or 'fdio' in scenario:
- flavor_metadata_alt = create_flavor.MEM_PAGE_SIZE_LARGE
- flavor_creator_alt = OpenStackFlavor(
- self.os_creds, FlavorConfig(
- name=CONST.__getattribute__(
- 'openstack_flavor_name_alt') + self.guid,
- ram=CONST.__getattribute__('openstack_flavor_ram'),
- disk=CONST.__getattribute__('openstack_flavor_disk'),
- vcpus=CONST.__getattribute__('openstack_flavor_vcpus'),
- metadata=flavor_metadata_alt))
- flavor_alt = flavor_creator_alt.create()
- if flavor_alt is None:
- raise Exception('Failed to create flavor')
- self.creators.append(flavor_creator_alt)
- flavor_id_alt = flavor_alt.id
-
- print("RESOURCES CREATE: image_id: %s, image_id_alt: %s, "
- "flavor_id: %s, flavor_id_alt: %s" % (
- image_id, image_id_alt, flavor_id, flavor_id_alt,))
-
- result = {
- 'image_id': image_id,
- 'image_id_alt': image_id_alt,
- 'flavor_id': flavor_id,
- 'flavor_id_alt': flavor_id_alt
- }
-
+ self.cloud = os_client_config.make_shade()
+ LOGGER.debug("cloud: %s", self.cloud)
+ self.domain = self.cloud.auth.get("project_domain_name", "Default")
+ LOGGER.debug("domain: %s", self.domain)
+ self.project = None
+ self.user = None
+ self.network = None
+ self.subnet = None
+ self.image = None
+ self.image_alt = None
+ self.flavor = None
+ self.flavor_alt = None
+
+ def _create_project(self):
+ """Create project for tests."""
+ self.project = self.cloud.create_project(
+ getattr(config.CONF, 'tempest_identity_tenant_name') + self.guid,
+ description=getattr(
+ config.CONF, 'tempest_identity_tenant_description'),
+ domain_id=self.domain)
+ LOGGER.debug("project: %s", self.project)
+
+ def _create_user(self):
+ """Create user for tests."""
+ self.user = self.cloud.create_user(
+ name=getattr(
+ config.CONF, 'tempest_identity_user_name') + self.guid,
+ password=getattr(config.CONF, 'tempest_identity_user_password'),
+ default_project=getattr(
+ config.CONF, 'tempest_identity_tenant_name') + self.guid,
+ domain_id=self.domain)
+ LOGGER.debug("user: %s", self.user)
+
+ def _create_network(self):
+ """Create network for tests."""
+ tempest_net_name = getattr(
+ config.CONF, 'tempest_private_net_name') + self.guid
+ provider = {}
+ if hasattr(config.CONF, 'tempest_network_type'):
+ provider["network_type"] = getattr(
+ config.CONF, 'tempest_network_type')
+ if hasattr(config.CONF, 'tempest_physical_network'):
+ provider["physical_network"] = getattr(
+ config.CONF, 'tempest_physical_network')
+ if hasattr(config.CONF, 'tempest_segmentation_id'):
+ provider["segmentation_id"] = getattr(
+ config.CONF, 'tempest_segmentation_id')
+ LOGGER.info(
+ "Creating network with name: '%s'", tempest_net_name)
+ self.network = self.cloud.create_network(
+ tempest_net_name, provider=provider)
+ LOGGER.debug("network: %s", self.network)
+
+ self.subnet = self.cloud.create_subnet(
+ self.network.id,
+ subnet_name=getattr(
+ config.CONF, 'tempest_private_subnet_name') + self.guid,
+ cidr=getattr(config.CONF, 'tempest_private_subnet_cidr'),
+ enable_dhcp=True,
+ dns_nameservers=[env.get('NAMESERVER')])
+ LOGGER.debug("subnet: %s", self.subnet)
+
+ def _create_image(self, name):
+ """Create image for tests"""
+ LOGGER.info("Creating image with name: '%s'", name)
+ meta = getattr(config.CONF, 'openstack_extra_properties', None)
+ image = self.cloud.create_image(
+ name, filename=getattr(config.CONF, 'openstack_image_url'),
+ is_public=True, meta=meta)
+ LOGGER.debug("image: %s", image)
+ return image
+
+ def _create_flavor(self, name):
+ """Create flavor for tests."""
+ flavor = self.cloud.create_flavor(
+ name, getattr(config.CONF, 'openstack_flavor_ram'),
+ getattr(config.CONF, 'openstack_flavor_vcpus'),
+ getattr(config.CONF, 'openstack_flavor_disk'))
+ self.cloud.set_flavor_specs(
+ flavor.id, getattr(config.CONF, 'flavor_extra_specs', {}))
+ LOGGER.debug("flavor: %s", flavor)
+ return flavor
+
+ def create(self, create_project=False):
+ """Create resources for Tempest test suite."""