Exemple #1
0
    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()
Exemple #2
0
    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
        }
Exemple #3
0
    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}
Exemple #4
0
    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()
Exemple #5
0
    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
Exemple #6
0
    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