def _start_vcs(self, context, vsa, drives=[]): """Start VCs for VSA """ vsa_id = vsa['id'] if vsa['status'] == VsaState.CREATING: self.vsa_api.update_vsa_status(context, vsa_id, VsaState.LAUNCHING) else: return # in _separate_ loop go over all volumes and mark as "attached" has_failed_volumes = False for drive in drives: vol_name = drive['name'] vol_disp_name = drive['display_name'] status = drive['status'] LOG.info(_("VSA ID %(vsa_id)d: Drive %(vol_name)s "\ "(%(vol_disp_name)s) is in %(status)s state"), locals()) if status == 'available': try: # self.volume_api.update(context, volume['id'], # dict(attach_status="attached")) pass except Exception as ex: msg = _("Failed to update attach status for volume " "%(vol_name)s. %(ex)s") % locals() LOG.exception(msg) else: has_failed_volumes = True if has_failed_volumes: LOG.info(_("VSA ID %(vsa_id)d: Delete all BE volumes"), locals()) self.vsa_api.delete_vsa_volumes(context, vsa_id, "BE", True) self.vsa_api.update_vsa_status(context, vsa_id, VsaState.FAILED) return # create user-data record for VC storage_data = vsa_utils.generate_user_data(vsa, drives) instance_type = instance_types.get_instance_type( vsa['instance_type_id']) # now start the VC instance vc_count = vsa['vc_count'] LOG.info(_("VSA ID %(vsa_id)d: Start %(vc_count)d instances"), locals()) vc_instances = self.compute_api.create( context, instance_type, # vsa['vsa_instance_type'], vsa['image_ref'], min_count=1, max_count=vc_count, display_name='vc-' + vsa['display_name'], display_description='VC for VSA ' + vsa['display_name'], availability_zone=vsa['availability_zone'], user_data=storage_data, metadata=dict(vsa_id=str(vsa_id))) self.vsa_api.update_vsa_status(context, vsa_id, VsaState.CREATED)
def test_instance_type_create_then_delete(self): """Ensure instance types can be created""" name = 'Small Flavor' flavorid = 'flavor1' original_list = instance_types.get_all_types() # create new type and make sure values stick inst_type = instance_types.create(name, 256, 1, 120, flavorid) inst_type_id = inst_type['id'] self.assertEqual(inst_type['flavorid'], flavorid) self.assertEqual(inst_type['name'], name) self.assertEqual(inst_type['memory_mb'], 256) self.assertEqual(inst_type['vcpus'], 1) self.assertEqual(inst_type['local_gb'], 120) self.assertEqual(inst_type['swap'], 0) self.assertEqual(inst_type['rxtx_factor'], 1) # make sure new type shows up in list new_list = instance_types.get_all_types() self.assertNotEqual(len(original_list), len(new_list), 'instance type was not created') # destroy instance and make sure deleted flag is set to True instance_types.destroy(name) inst_type = instance_types.get_instance_type(inst_type_id) self.assertEqual(1, inst_type["deleted"]) # deleted instance should not be in list anymoer new_list = instance_types.get_all_types() self.assertEqual(original_list, new_list) # ensure instances are gone after purge instance_types.purge(name) new_list = instance_types.get_all_types() self.assertEqual(original_list, new_list, 'instance type not purged')
def test_will_get_instance_type_by_id(self): default_instance_type = instance_types.get_default_instance_type() instance_type_id = default_instance_type['id'] fetched = instance_types.get_instance_type(instance_type_id) self.assertEqual(default_instance_type, fetched)