def _execute(self): resourceIds = parseSequenceArguments(self.parameters, 'ResourceId.') tagNames = parseSequenceArguments(self.parameters, 'Tag.', '.Key') tagValue = self.parameters.get('Tag.0.Value') if not resourceIds: raise MissingParameter(parameter='ResourceId.X') if not tagNames: raise MissingParameter(parameter='Tag.X.Key') if len(tagNames) != 1: raise InvalidFilter if tagNames[0] != 'Name': raise InvalidFilter # here we have only one tag called Name # TODO checking if tagValue was given for resource in resourceIds: if resource.startswith('i-'): instance_id = parseID(resource, Entity.instance) if not instance_id: raise InvalidInstanceID.Malformed try: instance = self.cluster_manager.user.vm.get_by_id( {'vm_id': instance_id}) except CLMException, error: raise InvalidInstanceID.NotFound(image_id=instance_id) if tagValue and tagValue != 'i-' + instance['vm_id']: continue self.cluster_manager.user.vm.edit({ 'vm_id': instance_id, 'name': 'i-' + instance_id, 'description': instance['description'] }) elif resource.startswith('vol-'): volume_id = parseID(resource, Entity.volume) if not volume_id: raise InvalidVolumeID.Malformed try: volume = self.cluster_manager.user.storage_image.get_by_id( {'storage_image_id': volume_id}) except CLMException, error: raise InvalidVolume.NotFound()
def _execute(self): key_names = parseSequenceArguments( self.parameters, prefix = 'KeyName.' ) filters = parseFilters( self.parameters ) if not validateEc2Filters( filters, self.available_filters ): raise InvalidFilter key_pairs = [] if key_names: for key_name in key_names: key_pairs.append( self.cluster_manager.user.key.get({'name':key_name}) ) else: key_pairs = self.cluster_manager.user.key.get_list(); result = [] for key_pair in key_pairs: result.append({'key-name' : key_pair['name'], 'fingerprint' : key_pair['fingerprint'] }) result = applyEc2Filters( result, filters ) print 'result:',result return { 'key_pairs': result }
def _execute(self): public_ips = parseSequenceArguments(self.parameters, prefix='PublicIp.') filters = parseFilters(self.parameters) filters_ok = validateEc2Filters(filters, self.available_filters) if not filters_ok: raise InvalidFilter result = [] addresses = self.cluster_manager.user.public_ip.get_list() if public_ips: addresses = [address for address in addresses if address['address'] in public_ips] for address in addresses: vm_id = None lease_id = address['lease_id'] if lease_id: instances = self.cluster_manager.user.vm.get_list() for instance in instances: for lease in instance['leases']: if lease['lease_id'] == lease_id: vm_id = instance['vm_id'] break result.append({ 'domain': 'standard', 'instance-id': vm_id, 'public-ip': address['address'], }) result = applyEc2Filters(result , filters) return {'addresses': result}
def _execute(self): resourceIds = parseSequenceArguments(self.parameters, 'ResourceId.') tagNames = parseSequenceArguments(self.parameters, 'Tag.', '.Key') tagValue = self.parameters.get('Tag.0.Value') if not resourceIds: raise MissingParameter(parameter='ResourceId.X') if not tagNames: raise MissingParameter(parameter='Tag.X.Key') if len(tagNames) != 1: raise InvalidFilter if tagNames[0] != 'Name': raise InvalidFilter # here we have only one tag called Name # TODO checking if tagValue was given for resource in resourceIds: if resource.startswith('i-'): instance_id = parseID(resource, Entity.instance) if not instance_id: raise InvalidInstanceID.Malformed try: instance = self.cluster_manager.user.vm.get_by_id({'vm_id':instance_id}) except CLMException, error: raise InvalidInstanceID.NotFound(image_id=instance_id) if tagValue and tagValue != 'i-' + instance['vm_id']: continue self.cluster_manager.user.vm.edit({'vm_id' : instance_id, 'name' : 'i-' + instance_id, 'description':instance['description']}) elif resource.startswith('vol-'): volume_id = parseID(resource, Entity.volume) if not volume_id: raise InvalidVolumeID.Malformed try: volume = self.cluster_manager.user.storage_image.get_by_id({'storage_image_id':volume_id}) except CLMException, error: raise InvalidVolume.NotFound()
def _execute(self): try: instances = parseSequenceArguments(self.parameters, 'InstanceId.') if not instances: raise MissingParameter(parameter='InstanceId') instances = parseIDs(instances, Entity.instance) if not instances: raise InvalidParameterValue # nie powinno się tutaj rzutować na inta? except ValueError: raise InvalidInstanceID.Malformed(image_id=0) # TODO wykrywanie który instance jest zly try: none = self.cluster_manager.user.vm.reset({'vm_ids':instances }) except CLMException, error: if error.status == 'user_permission' or error.status == 'vm_get': raise InvalidInstanceID.NotFound(image_id=0) # TODO wykrywanie która dokładnie to instancja print error.status raise InternalError
def _execute(self): try: instances = parseSequenceArguments(self.parameters, 'InstanceId.') if not instances: raise MissingParameter(parameter='InstanceId') instances = parseIDs(instances, Entity.instance) if not instances: raise InvalidParameterValue # nie powinno się tutaj rzutować na inta? except ValueError: raise InvalidInstanceID.Malformed( image_id=0) # TODO wykrywanie który instance jest zly try: none = self.cluster_manager.user.vm.reset({'vm_ids': instances}) except CLMException, error: if error.status == 'user_permission' or error.status == 'vm_get': raise InvalidInstanceID.NotFound( image_id=0) # TODO wykrywanie która dokładnie to instancja print error.status raise InternalError