+ out = list()
+ nova = nova_utils.nova_client(self._os_creds)
+
+ stack_servers = heat_utils.get_stack_servers(
+ self.__heat_cli, nova, self.__stack)
+
+ neutron = neutron_utils.neutron_client(self._os_creds)
+ glance = glance_utils.glance_client(self._os_creds)
+
+ for stack_server in stack_servers:
+ vm_inst_settings = settings_utils.create_vm_inst_settings(
+ nova, neutron, stack_server)
+ image_settings = settings_utils.determine_image_config(
+ glance, stack_server, self.image_settings)
+ keypair_settings = settings_utils.determine_keypair_config(
+ self.__heat_cli, self.__stack, stack_server,
+ keypair_settings=self.keypair_settings,
+ priv_key_key=heat_keypair_option)
+ vm_inst_creator = OpenStackVmInstance(
+ self._os_creds, vm_inst_settings, image_settings,
+ keypair_settings)
+ out.append(vm_inst_creator)
+ vm_inst_creator.initialize()
+
+ return out
+
+ def get_volume_creators(self):
+ """
+ Returns a list of Volume creator objects as configured by the heat
+ template
+ :return: list() of OpenStackVolume objects
+ """
+
+ out = list()
+ cinder = cinder_utils.cinder_client(self._os_creds)
+
+ volumes = heat_utils.get_stack_volumes(
+ self.__heat_cli, cinder, self.__stack)
+
+ for volume in volumes:
+ settings = settings_utils.create_volume_config(volume)
+ creator = OpenStackVolume(self._os_creds, settings)
+ out.append(creator)
+
+ try:
+ creator.initialize()
+ except Exception as e:
+ logger.error(
+ 'Unexpected error initializing volume creator - %s', e)
+
+ return out
+
+ def get_volume_type_creators(self):