예제 #1
0
 def test_instance_age(self):
     data = {
         'policies': [
             {'name': 'ancient-instances',
              'resource': 'ec2',
              'query': [{'instance-state-name': 'running'}],
              'filters': [{'days': 60, 'type': 'instance-age'}]
          }]}
     schema = generate(['ec2'])
     validator = Validator(schema)
     errors = list(validator.iter_errors(data))
     self.assertEqual(len(errors), 0)
예제 #2
0
 def test_runtime(self):
     data = lambda runtime: {
         'policies': [{
             'name': 'test',
             'resource': 's3',
             'mode': {
                 'type': 'periodic',
                 'runtime': runtime}}]
         }
     errors_with = lambda r: list(Validator(generate()).iter_errors(data(r)))
     self.assertEqual(len(errors_with('python2.7')), 0)
     self.assertEqual(len(errors_with('python3.6')), 0)
     self.assertEqual(len(errors_with('python4.5')), 1)
예제 #3
0
 def test_instance_age(self):
     data = {
         "policies": [
             {
                 "name": "ancient-instances",
                 "resource": "ec2",
                 "query": [{"instance-state-name": "running"}],
                 "filters": [{"days": 60, "type": "instance-age"}],
             }
         ]
     }
     schema = generate(["ec2"])
     validator = Validator(schema)
     errors = list(validator.iter_errors(data))
     self.assertEqual(len(errors), 0)
예제 #4
0
 def test_value_filter_short_form_invalid(self):
     for rtype in ["elb", "rds", "ec2"]:
         data = {
             'policies': [
                 {'name': 'instance-policy',
                  'resource': 'elb',
                  'filters': [
                      {"tag:Role": "webserver"}]}
             ]}
         schema = generate([rtype])
         # Disable standard value short form
         schema['definitions']['filters']['valuekv'] = {'type': 'number'}
         validator = Validator(schema)
         errors = list(validator.iter_errors(data))
         self.assertEqual(len(errors), 1)
예제 #5
0
    def test_mark_for_op(self):
        data = {
            "policies": [
                {
                    "name": "ebs-mark-delete",
                    "resource": "ebs",
                    "filters": [],
                    "actions": [{"type": "mark-for-op", "op": "delete", "days": 30}],
                }
            ]
        }
        schema = generate(["ebs"])
        validator = Validator(schema)

        errors = list(validator.iter_errors(data))
        self.assertEqual(len(errors), 0)
예제 #6
0
    def test_mark_for_op(self):
        data = {
            'policies': [{
                'name': 'ebs-mark-delete',
                'resource': 'ebs',
                'filters': [],
                'actions': [{
                    'type': 'mark-for-op',
                    'op': 'delete',
                    'days': 30}]}]
            }
        schema = generate(['ebs'])
        validator = Validator(schema)

        errors = list(validator.iter_errors(data))
        self.assertEqual(len(errors), 0)
예제 #7
0
 def test_value_filter_short_form_invalid(self):
     for rtype in ["elb", "rds", "ec2"]:
         data = {
             "policies": [
                 {
                     "name": "instance-policy",
                     "resource": "elb",
                     "filters": [{"tag:Role": "webserver"}],
                 }
             ]
         }
         schema = generate([rtype])
         # Disable standard value short form
         schema["definitions"]["filters"]["valuekv"] = {"type": "number"}
         validator = Validator(schema)
         errors = list(validator.iter_errors(data))
         self.assertEqual(len(errors), 1)
예제 #8
0
 def test_offhours_stop(self):
     data = {
         'policies': [
             {'name': 'ec2-offhours-stop',
              'resource': 'ec2',
              'filters': [
                  {'tag:aws:autoscaling:groupName': 'absent'},
                  {'type': 'offhour',
                   'tag': 'c7n_downtime',
                   'default_tz': 'et',
                   'offhour': 19}]
              }]
         }
     schema = generate(['ec2'])
     validator = Validator(schema)
     errors = list(validator.iter_errors(data))
     self.assertEqual(len(errors), 0)
예제 #9
0
 def test_runtime(self):
     data = lambda runtime: {   # NOQA
         "policies": [
             {
                 "name": "test",
                 "resource": "s3",
                 "mode": {
                     "execution-options": {"metrics_enabled": False},
                     "type": "periodic",
                     "schedule": "xyz",
                     "runtime": runtime,
                 },
             }
         ]
     }
     errors_with = lambda r: list( # NOQA
         Validator(generate()).iter_errors(data(r)))
     self.assertEqual(len(errors_with("python2.7")), 0)
     self.assertEqual(len(errors_with("python3.6")), 0)
     self.assertEqual(len(errors_with("python4.5")), 1)
예제 #10
0
 def test_runtime(self):
     data = lambda runtime: {
         'policies': [{
             'name': 'test',
             'resource': 's3',
             'mode': {
                 'execution-options': {
                     'metrics_enabled': False
                 },
                 'type': 'periodic',
                 'schedule': 'xyz',
                 'runtime': runtime
             }
         }]
     }
     errors_with = lambda r: list(
         Validator(generate()).iter_errors(data(r)))
     self.assertEqual(len(errors_with('python2.7')), 0)
     self.assertEqual(len(errors_with('python3.6')), 0)
     self.assertEqual(len(errors_with('python4.5')), 1)
예제 #11
0
 def test_offhours_stop(self):
     data = {
         "policies": [
             {
                 "name": "ec2-offhours-stop",
                 "resource": "ec2",
                 "filters": [
                     {"tag:aws:autoscaling:groupName": "absent"},
                     {
                         "type": "offhour",
                         "tag": "c7n_downtime",
                         "default_tz": "et",
                         "offhour": 19,
                     },
                 ],
             }
         ]
     }
     schema = generate(["ec2"])
     validator = Validator(schema)
     errors = list(validator.iter_errors(data))
     self.assertEqual(len(errors), 0)
예제 #12
0
 def setUp(self):
     if not self.validator:
         self.validator = Validator(generate())