+ # orchestrator VM flavor
+ self.__logger.info("Get or create flavor for cloudify manager vm ...")
+
+ flavor_settings = FlavorConfig(
+ name=self.orchestrator['requirements']['flavor']['name'],
+ ram=self.orchestrator['requirements']['flavor']['ram_min'],
+ disk=50,
+ vcpus=2)
+ flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings)
+ flavor_creator.create()
+ self.created_object.append(flavor_creator)
+ image_settings = ImageConfig(
+ name=self.orchestrator['requirements']['os_image'],
+ image_user='centos',
+ exists=True)
+
+ port_settings = PortConfig(
+ name='cloudify_manager_port-{}'.format(self.uuid),
+ network_name=network_settings.name)
+
+ manager_settings = VmInstanceConfig(
+ name='cloudify_manager-{}'.format(self.uuid),
+ flavor=flavor_settings.name,
+ port_settings=[port_settings],
+ security_group_names=[
+ security_group_creator.sec_grp_settings.name],
+ floating_ip_settings=[FloatingIpConfig(
+ name='cloudify_manager_fip-{}'.format(self.uuid),
+ port_name=port_settings.name,
+ router_name=router_creator.router_settings.name)])
+
+ manager_creator = OpenStackVmInstance(
+ self.snaps_creds, manager_settings, image_settings,
+ keypair_settings)
+
+ self.__logger.info("Creating cloudify manager VM")
+ manager_creator.create()
+ self.created_object.append(manager_creator)
+
+ public_auth_url = keystone_utils.get_endpoint(
+ self.snaps_creds, 'identity')
+
+ cfy_creds = dict(
+ keystone_username=self.snaps_creds.username,
+ keystone_password=self.snaps_creds.password,
+ keystone_tenant_name=self.snaps_creds.project_name,
+ keystone_url=public_auth_url,
+ region=self.snaps_creds.region_name,
+ user_domain_name=self.snaps_creds.user_domain_name,
+ project_domain_name=self.snaps_creds.project_domain_name)
+ self.__logger.info("Set creds for cloudify manager %s", cfy_creds)
+
+ cfy_client = CloudifyClient(
+ host=manager_creator.get_floating_ip().ip,
+ username='admin', password='admin', tenant='default_tenant')
+
+ self.orchestrator['object'] = cfy_client
+
+ self.__logger.info("Attemps running status of the Manager")
+ cfy_status = None
+ retry = 10
+ while str(cfy_status) != 'running' and retry:
+ try:
+ cfy_status = cfy_client.manager.get_status()['status']
+ self.__logger.info(
+ "The current manager status is %s", cfy_status)
+ except Exception: # pylint: disable=broad-except
+ self.__logger.info(
+ "Cloudify Manager isn't up and running. Retrying ...")
+ retry = retry - 1
+ time.sleep(30)
+
+ if str(cfy_status) == 'running':
+ self.__logger.info("Cloudify Manager is up and running")
+ else:
+ raise Exception("Cloudify Manager isn't up and running")
+
+ self.__logger.info("Put OpenStack creds in manager")
+ secrets_list = cfy_client.secrets.list()
+ for k, val in cfy_creds.iteritems():
+ if not any(d.get('key', None) == k for d in secrets_list):
+ cfy_client.secrets.create(k, val)
+ else:
+ cfy_client.secrets.update(k, val)
+
+ duration = time.time() - start_time
+
+ self.__logger.info("Put private keypair in manager")
+ if manager_creator.vm_ssh_active(block=True):
+ ssh = manager_creator.ssh_client()
+ scp = SCPClient(ssh.get_transport(), socket_timeout=15.0)
+ scp.put(kp_file, '~/')
+ cmd = "sudo cp ~/cloudify_ims.pem /etc/cloudify/"
+ self.run_blocking_ssh_command(ssh, cmd)
+ cmd = "sudo chmod 444 /etc/cloudify/cloudify_ims.pem"
+ self.run_blocking_ssh_command(ssh, cmd)
+ cmd = "sudo yum install -y gcc python-devel"
+ self.run_blocking_ssh_command(
+ ssh, cmd, "Unable to install packages on manager")
+
+ self.details['orchestrator'].update(status='PASS', duration=duration)
+
+ self.vnf['inputs'].update(dict(
+ external_network_name=ext_net_name,
+ network_name=network_settings.name,
+ key_pair_name=keypair_settings.name
+ ))
+ self.result = 1/3 * 100
+ return True