Beispiel #1
0
    def __new__(cls, name, parents, attrs):
        if 'filter_registry' not in attrs:
            attrs['filter_registry'] = FilterRegistry('%s.filters' %
                                                      name.lower())
        if 'action_registry' not in attrs:
            attrs['action_registry'] = ActionRegistry('%s.filters' %
                                                      name.lower())

        if attrs['resource_type']:
            m = ResourceQuery.resolve(attrs['resource_type'])
            # Generic cloud watch metrics support
            if m.dimension and 'metrics':
                attrs['filter_registry'].register('metrics', MetricsFilter)
            # Generic ec2 resource tag support
            if m.service == 'ec2' and getattr(m, 'taggable', True):
                register_tags(attrs['filter_registry'],
                              attrs['action_registry'])
        return super(QueryMeta, cls).__new__(cls, name, parents, attrs)
    def __new__(cls, name, parents, attrs):
        if 'filter_registry' not in attrs:
            attrs['filter_registry'] = FilterRegistry(
                '%s.filters' % name.lower())
        if 'action_registry' not in attrs:
            attrs['action_registry'] = ActionRegistry(
                '%s.filters' % name.lower())

        if attrs['resource_type']:
            m = ResourceQuery.resolve(attrs['resource_type'])
            # Generic cloud watch metrics support
            if m.dimension and 'metrics':
                attrs['filter_registry'].register('metrics', MetricsFilter)
            # EC2 Service boilerplate ...
            if m.service == 'ec2':
                # Generic ec2 retry
                attrs['retry'] = staticmethod(get_retry((
                    'RequestLimitExceeded', 'Client.RequestLimitExceeded')))
                # Generic ec2 resource tag support
                if getattr(m, 'taggable', True):
                    register_tags(
                        attrs['filter_registry'], attrs['action_registry'])
        return super(QueryMeta, cls).__new__(cls, name, parents, attrs)
Beispiel #3
0
    def __new__(cls, name, parents, attrs):
        if 'filter_registry' not in attrs:
            attrs['filter_registry'] = FilterRegistry(
                '%s.filters' % name.lower())
        if 'action_registry' not in attrs:
            attrs['action_registry'] = ActionRegistry(
                '%s.filters' % name.lower())

        if attrs['resource_type']:
            m = ResourceQuery.resolve(attrs['resource_type'])
            # Generic cloud watch metrics support
            if m.dimension and 'metrics':
                attrs['filter_registry'].register('metrics', MetricsFilter)
            # EC2 Service boilerplate ...
            if m.service == 'ec2':
                # Generic ec2 retry
                attrs['retry'] = staticmethod(get_retry((
                    'RequestLimitExceeded', 'Client.RequestLimitExceeded')))
                # Generic ec2 resource tag support
                if getattr(m, 'taggable', True):
                    register_tags(
                        attrs['filter_registry'], attrs['action_registry'])
        return super(QueryMeta, cls).__new__(cls, name, parents, attrs)
Beispiel #4
0
    FilterValidationError, OPERATORS)

from c7n.manager import resources
from c7n.resources.kms import ResourceKmsKeyAlias
from c7n.query import QueryResourceManager, ResourceQuery
from c7n import tags
from c7n.utils import (
    local_session, set_annotation, query_instances, chunks, type_schema)


log = logging.getLogger('custodian.ebs')

filters = FilterRegistry('ebs.filters')
actions = ActionRegistry('ebs.actions')

tags.register_tags(filters, actions)


@resources.register('ebs-snapshot')
class Snapshot(QueryResourceManager):

    resource_type = "aws.ec2.snapshot"
    filter_registry = FilterRegistry('ebs-snapshot.filters')
    action_registry = ActionRegistry('ebs-snapshot.actions')


@Snapshot.filter_registry.register('age')
class SnapshotAge(AgeFilter):

    schema = type_schema(
        'age',
Beispiel #5
0
from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import (FilterRegistry, AgeFilter, ValueFilter,
                         ANNOTATION_KEY, FilterValidationError, OPERATORS)

from c7n.manager import resources
from c7n.query import QueryResourceManager, ResourceQuery
from c7n import tags
from c7n.utils import (local_session, set_annotation, query_instances, chunks,
                       type_schema)

log = logging.getLogger('custodian.ebs')

filters = FilterRegistry('ebs.filters')
actions = ActionRegistry('ebs.actions')

tags.register_tags(filters, actions)


@resources.register('ebs-snapshot')
class Snapshot(QueryResourceManager):

    resource_type = "aws.ec2.snapshot"
    filter_registry = FilterRegistry('ebs-snapshot.filters')
    action_registry = ActionRegistry('ebs-snapshot.actions')


@Snapshot.filter_registry.register('age')
class SnapshotAge(AgeFilter):

    schema = type_schema('age',
                         days={'type': 'number'},
Beispiel #6
0
from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import (
    FilterRegistry, AgeFilter, ValueFilter, Filter, OPERATORS
)

from c7n.manager import resources
from c7n.query import QueryResourceManager
from c7n.offhours import OffHour, OnHour
from c7n import tags, utils
from c7n.utils import type_schema


filters = FilterRegistry('ec2.filters')
actions = ActionRegistry('ec2.actions')

tags.register_tags(filters, actions, 'InstanceId')


@resources.register('ec2')
class EC2(QueryResourceManager):

    resource_type = "aws.ec2.instance"
    filter_registry = filters
    action_registry = actions

    def __init__(self, ctx, data):
        super(EC2, self).__init__(ctx, data)
        self.queries = QueryFilter.parse(self.data.get('query', []))

    def resources(self, query=None):
        q = self.resource_query()
Beispiel #7
0
from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import (
    FilterRegistry, AgeFilter, ValueFilter, Filter, OPERATORS
)

from c7n.manager import resources
from c7n.query import QueryResourceManager
from c7n.offhours import OffHour, OnHour
from c7n import tags, utils
from c7n.utils import type_schema


filters = FilterRegistry('ec2.filters')
actions = ActionRegistry('ec2.actions')

tags.register_tags(filters, actions, 'InstanceId')


@resources.register('ec2')
class EC2(QueryResourceManager):

    resource_type = "aws.ec2.instance"
    filter_registry = filters
    action_registry = actions

    def __init__(self, ctx, data):
        super(EC2, self).__init__(ctx, data)
        self.queries = QueryFilter.parse(self.data.get('query', []))

    def resources(self, query=None):
        q = self.resource_query()
Beispiel #8
0
from c7n.filters import (
    FilterRegistry, AgeFilter, ValueFilter, ANNOTATION_KEY)

from c7n.manager import resources
from c7n.query import QueryResourceManager
from c7n import tags
from c7n.utils import (
    local_session, set_annotation, query_instances, chunks, type_schema)


log = logging.getLogger('custodian.ebs')

filters = FilterRegistry('ebs.filters')
actions = ActionRegistry('ebs.actions')

tags.register_tags(filters, actions, 'VolumeId')


@resources.register('ebs-snapshot')
class Snapshot(QueryResourceManager):

    resource_type = "aws.ec2.snapshot"
    filter_registry = FilterRegistry('ebs-snapshot.filters')
    action_registry = ActionRegistry('ebs-snapshot.actions')


@Snapshot.filter_registry.register('age')
class SnapshotAge(AgeFilter):

    schema = type_schema('age', days={'type': 'number'})
    date_attribute = 'StartTime'
Beispiel #9
0
from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import (FilterRegistry, AgeFilter, ValueFilter,
                         ANNOTATION_KEY)

from c7n.manager import ResourceManager, resources
from c7n import tags
from c7n.utils import (local_session, set_annotation, query_instances, chunks,
                       type_schema)

log = logging.getLogger('custodian.ebs')

filters = FilterRegistry('ebs.filters')
actions = ActionRegistry('ebs.actions')

tags.register_tags(filters, actions, 'VolumeId')


@resources.register('ebs-snapshot')
class Snapshot(ResourceManager):

    filter_registry = FilterRegistry('ebs-snapshot.filters')
    action_registry = ActionRegistry('ebs-snapshot.actions')

    def resources(self):
        c = self.session_factory().client('ec2')
        query = self.resource_query()
        if self._cache.load():
            snaps = self._cache.get({
                'region': self.config.region,
                'resource': 'ebs-snapshot',
Beispiel #10
0
import logging

from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import FilterRegistry, AgeFilter, OPERATORS

from c7n.manager import resources
from c7n.query import QueryResourceManager, ResourceQuery
from c7n.tags import register_tags
from c7n.utils import local_session, type_schema

log = logging.getLogger('custodian.ami')

filters = FilterRegistry('ami.filters')
actions = ActionRegistry('ami.actions')

register_tags(filters, actions, 'AmiId')


@resources.register('ami')
class AMI(QueryResourceManager):
    class resource_type(ResourceQuery.resolve('aws.ec2.image')):
        date = 'CreationDate'

    filter_registry = filters
    action_registry = actions


@actions.register('deregister')
class Deregister(BaseAction):

    schema = type_schema('deregister')
Beispiel #11
0
from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import FilterRegistry, AgeFilter, OPERATORS

from c7n.manager import resources
from c7n.query import QueryResourceManager, ResourceQuery
from c7n.tags import register_tags
from c7n.utils import local_session, type_schema


log = logging.getLogger('custodian.ami')


filters = FilterRegistry('ami.filters')
actions = ActionRegistry('ami.actions')

register_tags(filters, actions)


@resources.register('ami')
class AMI(QueryResourceManager):

    class resource_type(ResourceQuery.resolve('aws.ec2.image')):
        date = 'CreationDate'

    filter_registry = filters
    action_registry = actions


@actions.register('deregister')
class Deregister(BaseAction):
Beispiel #12
0
from c7n.actions import ActionRegistry, BaseAction
from c7n.filters import FilterRegistry, AgeFilter, OPERATORS

from c7n.manager import resources
from c7n.query import QueryResourceManager, ResourceQuery
from c7n.tags import register_tags
from c7n.utils import local_session, type_schema


log = logging.getLogger('custodian.ami')


filters = FilterRegistry('ami.filters')
actions = ActionRegistry('ami.actions')

register_tags(filters, actions, 'AmiId')


@resources.register('ami')
class AMI(QueryResourceManager):

    class resource_type(ResourceQuery.resolve('aws.ec2.image')):
        date = 'CreationDate'

    filter_registry = filters
    action_registry = actions


@actions.register('deregister')
class Deregister(BaseAction):