from functest.utils import config
from functest.utils import env
-from functest.utils import functest_utils
class NewProject(object):
self.guid = guid
self.project = None
self.user = None
+ self.password = None
+ self.domain = None
def create(self):
"""Create projects/users"""
assert self.orig_cloud
assert self.case_name
- password = str(uuid.uuid4())
- domain = self.orig_cloud.get_domain(
+ self.password = str(uuid.uuid4())
+ self.domain = self.orig_cloud.get_domain(
name_or_id=self.orig_cloud.auth.get(
"project_domain_name", "Default"))
self.project = self.orig_cloud.create_project(
name='{}-project_{}'.format(self.case_name, self.guid),
description="Created by OPNFV Functest: {}".format(
self.case_name),
- domain_id=domain.id)
+ domain_id=self.domain.id)
self.__logger.debug("project: %s", self.project)
self.user = self.orig_cloud.create_user(
name='{}-user_{}'.format(self.case_name, self.guid),
- password=password,
- domain_id=domain.id)
+ password=self.password,
+ domain_id=self.domain.id)
self.__logger.debug("user: %s", self.user)
self.orig_cloud.grant_role(
- "_member_", user=self.user.id, project=self.project.id,
- domain=domain.id)
+ "Member", user=self.user.id, project=self.project.id,
+ domain=self.domain.id)
osconfig = os_client_config.config.OpenStackConfig()
osconfig.cloud_config[
'clouds']['envvars']['project_name'] = self.project.name
osconfig.cloud_config['clouds']['envvars']['username'] = self.user.name
- osconfig.cloud_config['clouds']['envvars']['password'] = password
+ osconfig.cloud_config['clouds']['envvars']['password'] = self.password
+ self.__logger.debug("cloud_config %s", osconfig.cloud_config)
self.cloud = shade.OpenStackCloud(
cloud_config=osconfig.get_one_cloud())
+ self.__logger.debug("new cloud %s", self.cloud.auth)
def clean(self):
"""Remove projects/users"""
__logger = logging.getLogger(__name__)
cidr = '192.168.0.0/24'
+ shared_network = False
def __init__(self, **kwargs):
if "case_name" not in kwargs:
self.ext_net = None
self.__logger.exception("Cannot connect to Cloud")
try:
- self.ext_net = functest_utils.get_external_network(self.cloud)
+ self.ext_net = self.get_external_network(self.cloud)
except Exception: # pylint: disable=broad-except
self.__logger.exception("Cannot get the external network")
self.guid = str(uuid.uuid4())
self.subnet = None
self.router = None
+ @staticmethod
+ def get_external_network(cloud):
+ """
+ Returns the configured external network name or
+ the first retrieved external network name
+ """
+ assert cloud
+ if env.get("EXTERNAL_NETWORK"):
+ network = cloud.get_network(
+ env.get("EXTERNAL_NETWORK"), {"router:external": True})
+ if network:
+ return network
+ networks = cloud.list_networks({"router:external": True})
+ if networks:
+ return networks[0]
+ return None
+
def _create_network_ressources(self):
assert self.cloud
assert self.ext_net
config.CONF, '{}_segmentation_id'.format(self.case_name))
self.network = self.cloud.create_network(
'{}-net_{}'.format(self.case_name, self.guid),
- provider=provider)
+ provider=provider,
+ shared=self.shared_network)
self.__logger.debug("network: %s", self.network)
self.subnet = self.cloud.create_subnet(