def test_custom_bad_hours(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=19, minute=00)
        # default error handling is to exclude the resource

        with mock_datetime_now(t, datetime):
            # This isn't considered a bad value, its basically omitted.
            i = instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=();tz=et'}])
            self.assertEqual(OffHour({})(i), True)

            i = instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=(m-f,90);on=(m-f,7);tz=et'}])
            #malformed value
            self.assertEqual(OffHour({})(i), False)

        t = t.replace(year=2016, month=5, day=26, hour=13, minute=00)
        with mock_datetime_now(t, datetime):
            i = instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=();tz=et'}])
            #will go to default values, but not work due to default time
            self.assertEqual(OffHour({})(i), False)

            i = instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=(m-f,90);on=(m-f,7);tz=et'}])
            self.assertEqual(OffHour({})(i), False)
示例#2
0
    def test_jmespath(self):
        self.assertFilter(
            {'Placement.AvailabilityZone': 'us-west-2c'},
            instance(),
            True)

        self.assertFilter(
            {'Placement.AvailabilityZone': 'us-east-1c'},
            instance(),
            False)
 def test_less_than(self):
     f = filters.factory({
         'type': 'value',
         'key': 'Number',
         'value': 10,
         'op': 'less-than'
     })
     self.assertEqual(f(instance(Number=9)), True)
     self.assertEqual(f(instance(Number=11)), False)
     self.assertEqual(f(instance(Number=10)), False)
示例#4
0
 def test_or(self):
     f = filters.factory(
         {'or': [{
             'Architecture': 'x86_64'
         }, {
             'Architecture': 'armv8'
         }]})
     results = [instance(Architecture='x86_64')]
     self.assertEqual(f.process(results), results)
     self.assertEqual(f.process([instance(Architecture='amd64')]), [])
示例#5
0
 def test_filter_tag_count(self):
     tags = []
     for i in range(10):
         tags.append({'Key': str(i), 'Value': str(i)})
     i = instance(Tags=tags)
     self.assertFilter(
         {'type': 'tag-count', 'op': 'lt'}, i, False)
     tags.pop(0)
     i = instance(Tags=tags)
     self.assertFilter(
         {'type': 'tag-count', 'op': 'gte', 'count': 9}, i, True)
    def test_custom_bad_tz(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=7, minute=00)
        with mock_datetime_now(t, datetime):
            i = instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=(m-f,19);on=(m-f,7);tz=et'}])
            self.assertEqual(OnHour({})(i), True)

            i = instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=(m-f,20);on=(m-f,7);tz=abc'}])
            self.assertEqual(OnHour({})(i), False)
示例#7
0
 def test_regex_match(self):
     f = filters.factory({
         'type': 'value',
         'key': 'Color',
         'value': '*green*',
         'op': 'glob'
     })
     self.assertEqual(
         f(instance(Architecture='x86_64', Color='mighty green papaya')),
         True)
     self.assertEqual(f(instance(Architecture='x86_64', Color='blue')),
                      False)
示例#8
0
 def test_and(self):
     f = filters.factory(
         {'and': [{
             'Architecture': 'x86_64'
         }, {
             'Color': 'green'
         }]})
     results = [instance(Architecture='x86_64', Color='green')]
     self.assertEqual(f.process(results), results)
     self.assertEqual(
         f.process([instance(Architecture='x86_64', Color='blue')]), [])
     self.assertEqual(f.process([instance(Architecture='x86_64')]), [])
示例#9
0
 def test_or(self):
     f = filters.factory({
         'or': [
             {'Architecture': 'x86_64'},
             {'Architecture': 'armv8'}]})
     results = [instance(Architecture='x86_64')]
     self.assertEqual(
         f.process(results),
         results)
     self.assertEqual(
         f.process([instance(Architecture='amd64')]),
         [])
示例#10
0
    def test_custom_onhours(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=7, minute=00)
        results = []

        with mock_datetime_now(t, datetime):
            for i in [instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=(m-f,19);on=(m-f,7);tz=et'}]),
                      instance(Tags=[{'Key': 'maid_offhours',
                                'Value': 'off=(m-f,20);on=(m-f,9);tz=et'}])]:
                results.append(OnHour({})(i))
            self.assertEqual(results, [True, False])
示例#11
0
 def test_not_in(self):
     f = filters.factory(
         {'type': 'value',
          'key': 'Thing',
          'value': ['Foo', 'Bar', 'Quux'],
          'op': 'not-in'})
     self.assertEqual(
         f(instance(Thing='Baz')),
         True)
     self.assertEqual(
         f(instance(Thing='Foo')),
         False)
示例#12
0
 def test_not_equal(self):
     f = filters.factory(
         {'type': 'value',
          'key': 'Color',
          'value': 'green',
          'op': 'not-equal'})
     self.assertEqual(
         f(instance(Color='green')),
         False)
     self.assertEqual(
         f(instance(Color='blue')),
         True)
示例#13
0
 def test_filter_tag_count(self):
     tags = []
     for i in range(10):
         tags.append({'Key': str(i), 'Value': str(i)})
     i = instance(Tags=tags)
     self.assertFilter({'type': 'tag-count', 'op': 'lt'}, i, False)
     tags.pop(0)
     i = instance(Tags=tags)
     self.assertFilter({
         'type': 'tag-count',
         'op': 'gte',
         'count': 9
     }, i, True)
示例#14
0
 def test_offhours_real_world_values(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         results = [OffHour({})(i) for i in [
                 instance(Tags=[
                     {'Key': 'maid_offhours', 'Value': ''}]),
                 instance(Tags=[
                     {'Key': 'maid_offhours', 'Value': '"Offhours tz=ET"'}]),
                 instance(Tags=[
                     {'Key': 'maid_offhours', 'Value': 'Offhours tz=PT'}])]]
         # unclear what this is really checking
         self.assertEqual(results, [True, True, True])
示例#15
0
    def test_filter_tag(self):
        i = instance(Tags=[
            {'Key': 'ASV', 'Value': 'abcd'}])
        self.assertFilter(
            {'tag:ASV': 'def'}, i, False)
        self.assertEqual(
            annotation(i, base_filters.ANNOTATION_KEY), ())

        i = instance(Tags=[
            {'Key': 'CMDB', 'Value': 'abcd'}])
        self.assertFilter(
            {'tag:ASV': 'absent'}, i, True)
        self.assertEqual(
            annotation(i, base_filters.ANNOTATION_KEY), ['tag:ASV'])
示例#16
0
    def test_filters(self):
        ec2 = self.get_manager({
            'filters': [
                {'tag:CMDBEnvironment': 'absent'}]})

        self.assertEqual(
            len(ec2.filter_resources([
                instance(Tags=[{"Key": "ASV", "Value": "xyz"}])])),
            1)

        self.assertEqual(
            len(ec2.filter_resources([
                instance(Tags=[{"Key": "CMDBEnvironment", "Value": "xyz"}])])),
            0)
示例#17
0
    def test_custom_bad_tz(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=7, minute=00)
        with mock_datetime_now(t, datetime):
            i = instance(Tags=[{
                'Key': 'maid_offhours',
                'Value': 'off=(m-f,19);on=(m-f,7);tz=et'
            }])
            self.assertEqual(OnHour({})(i), True)

            i = instance(Tags=[{
                'Key': 'maid_offhours',
                'Value': 'off=(m-f,20);on=(m-f,7);tz=abc'
            }])
            self.assertEqual(OnHour({})(i), False)
示例#18
0
    def test_opt_out_behavior(self):
        # Some users want to match based on policy filters to
        # a resource subset with default opt out behavior
        t = datetime.datetime(
            year=2015, month=12, day=1, hour=19, minute=5,
            tzinfo=zoneinfo.gettz('America/New_York'))
        f = OffHour({'opt-out': True})

        with mock_datetime_now(t, datetime):
            i = instance(Tags=[])
            self.assertEqual(f(i), True)
            i = instance(
                Tags=[{'Key': 'maid_offhours', 'Value': 'off'}])
            self.assertEqual(f(i), False)
            self.assertEqual(f.opted_out, [i])
示例#19
0
 def test_process(self):
     f = OffHour({'opt-out': True})
     instances = [
         instance(Tags=[]),
         instance(
             Tags=[{'Key': 'maid_offhours', 'Value': 'off'}]),
         instance(
             Tags=[
                 {'Key': 'maid_offhours',
                  'Value': "off=(m-f,5);zebrablue,on=(t-w,5)"}])]
     t = datetime.datetime(
         year=2015, month=12, day=1, hour=19, minute=5,
         tzinfo=zoneinfo.gettz('America/New_York'))
     with mock_datetime_now(t, datetime):
         self.assertEqual(f.process(instances), [instances[0]])
示例#20
0
    def test_not(self):

        results = [
            instance(Architecture='x86_64', Color='green'),
            instance(Architecture='x86_64', Color='blue'),
            instance(Architecture='x86_64', Color='yellow'),
        ]

        f = filters.factory({
            'not': [
                {'Architecture': 'x86_64'},
                {'Color': 'green'}]})
        self.assertEqual(len(f.process(results)), 2)
        
        """
示例#21
0
 def test_less_than(self):
     f = filters.factory(
         {'type': 'value',
          'key': 'Number',
          'value': 10,
          'op': 'less-than'})
     self.assertEqual(
         f(instance(Number=9)),
         True)
     self.assertEqual(
         f(instance(Number=11)),
         False)
     self.assertEqual(
         f(instance(Number=10)),
         False)
示例#22
0
 def test_not_null_filter(self):
     self.assertFilter(
         {"key": "Hypervisor",
          "value": "not-null",
          "type": "value"},
         instance(),
         True)
示例#23
0
 def test_regex_match(self):
     f = filters.factory(
         {'type': 'value',
          'key': 'Color',
          'value': '*green*',
          'op': 'glob'})
     self.assertEqual(
         f(instance(
             Architecture='x86_64',
             Color='mighty green papaya')),
         True)
     self.assertEqual(
         f(instance(
             Architecture='x86_64',
             Color='blue')),
         False)
示例#24
0
 def i(d, action='stop'):
     return instance(Tags=[{
         "Key":
         "maid_status",
         "Value":
         "not compliant: %s@%s" % (action, d.strftime("%Y/%m/%d"))
     }])
示例#25
0
 def test_offhours(self):
     t = datetime.datetime(year=2015, month=12, day=1, hour=19, minute=5,
                           tzinfo=zoneinfo.gettz('America/New_York'))
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[
             {'Key': 'maid_offhours', 'Value': 'tz=est'}])
         self.assertEqual(OffHour({})(i), True)
示例#26
0
 def test_tz_only(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2016, month=5, day=26, hour=7, minute=00)
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{'Key': 'maid_offhours',
                             'Value': 'tz=est'}])
         self.assertEqual(OnHour({})(i), True)
示例#27
0
 def test_not_null_filter(self):
     self.assertFilter(
         {
             "key": "Hypervisor",
             "value": "not-null",
             "type": "value"
         }, instance(), True)
示例#28
0
    def test_not(self):

        results = [
            instance(Architecture='x86_64', Color='green'),
            instance(Architecture='x86_64', Color='blue'),
            instance(Architecture='x86_64', Color='yellow'),
        ]

        f = filters.factory(
            {'not': [{
                'Architecture': 'x86_64'
            }, {
                'Color': 'green'
            }]})
        self.assertEqual(len(f.process(results)), 2)
        """
示例#29
0
 def test_normalize(self):
     fdata = {
         'type': 'value',
         'key': 'tag:Name',
         'value_type': 'normalize',
         'value': 'compilelambda'
     }
     self.assertFilter(fdata, instance(), True)
示例#30
0
    def test_resource_count_filter(self):
        fdata = {
            'type': 'value',
            'value_type': 'resource_count',
            'op': 'lt',
            'value': 2
        }
        self.assertFilter(fdata, instance(file='ec2-instances.json'), [])

        f = filters.factory({
            'type': 'value',
            'value_type': 'resource_count',
            'op': 'eq',
            'value': 2
        })
        i = instance(file='ec2-instances.json')
        self.assertEqual(i, f(i))
示例#31
0
 def test_present(self):
     i = instance(Tags=[{'Key': 'ASV', 'Value': ''}])
     self.assertFilter(
         {
             'type': 'value',
             'key': 'tag:ASV',
             'value': 'present'
         }, i, True)
示例#32
0
 def test_size(self):
     fdata = {
         'type': 'value',
         'key': 'SecurityGroups[].GroupId',
         'value_type': 'size',
         'value': 2
     }
     self.assertFilter(fdata, instance(), True)
示例#33
0
 def test_resource_schedule_error(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     f = OffHour({})
     f.process_resource_schedule = lambda: False
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
         self.assertEqual(f(i), False)
示例#34
0
 def test_size(self):
     fdata = {
         'type': 'value',
         'key': 'SecurityGroups[].GroupId',
         'value_type': 'size',
         'value': 2
     }
     self.assertFilter(fdata, instance(), True)
示例#35
0
 def test_normalize(self):
     fdata = {
         'type': 'value',
         'key': 'tag:Name',
         'value_type': 'normalize',
         'value': 'compilelambda'
     }
     self.assertFilter(fdata, instance(), True)
示例#36
0
    def test_opt_out_behavior(self):
        # Some users want to match based on policy filters to
        # a resource subset with default opt out behavior
        t = datetime.datetime(year=2015,
                              month=12,
                              day=1,
                              hour=19,
                              minute=5,
                              tzinfo=zoneinfo.gettz('America/New_York'))
        f = OffHour({'opt-out': True})

        with mock_datetime_now(t, datetime):
            i = instance(Tags=[])
            self.assertEqual(f(i), True)
            i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'off'}])
            self.assertEqual(f(i), False)
            self.assertEqual(f.opted_out, [i])
示例#37
0
    def test_resource_count_filter(self):
        fdata = {
            'type': 'value',
            'value_type': 'resource_count',
            'op': 'lt',
            'value': 2
        }
        self.assertFilter(fdata, instance(file='ec2-instances.json'), [])

        f = filters.factory({
            'type': 'value',
            'value_type': 'resource_count',
            'op': 'eq',
            'value': 2
        })
        i = instance(file='ec2-instances.json')
        self.assertEqual(i, f(i))
示例#38
0
 def test_present(self):
     i = instance(Tags=[
         {'Key': 'ASV', 'Value': ''}])
     self.assertFilter(
         {'type': 'value',
          'key': 'tag:ASV',
          'value': 'present'},
         i, True)
示例#39
0
    def test_custom_onhours(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=7, minute=00)
        results = []

        with mock_datetime_now(t, datetime):
            for i in [
                    instance(Tags=[{
                        'Key': 'maid_offhours',
                        'Value': 'off=(m-f,19);on=(m-f,7);tz=et'
                    }]),
                    instance(Tags=[{
                        'Key': 'maid_offhours',
                        'Value': 'off=(m-f,20);on=(m-f,9);tz=et'
                    }])
            ]:
                results.append(OnHour({})(i))
            self.assertEqual(results, [True, False])
示例#40
0
 def test_swap(self):
     fdata = {
         'type': 'value',
         'key': 'SecurityGroups[].GroupId',
         'value_type': 'swap',
         'op': 'in',
         'value': 'sg-47b76f22'
     }
     self.assertFilter(fdata, instance(), True)
示例#41
0
 def test_resource_schedule_error(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     f = OffHour({})
     f.process_resource_schedule = lambda: False
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[
             {'Key': 'maid_offhours', 'Value': 'tz=est'}])
         self.assertEqual(f(i), False)
示例#42
0
 def test_swap(self):
     fdata = {
         'type': 'value',
         'key': 'SecurityGroups[].GroupId',
         'value_type': 'swap',
         'op': 'in',
         'value': 'sg-47b76f22'
     }
     self.assertFilter(fdata, instance(), True)
示例#43
0
 def test_offhours(self):
     t = datetime.datetime(year=2015,
                           month=12,
                           day=1,
                           hour=19,
                           minute=5,
                           tzinfo=zoneinfo.gettz('America/New_York'))
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
         self.assertEqual(OffHour({})(i), True)
示例#44
0
 def test_event_filter(self):
     b = Bag(data={'mode': []})
     event = event_data('event-instance-state.json')
     f = {'type': 'event', 'key': 'detail.state', 'value': 'pending'}
     ef = filters.factory(f, b)
     self.assertTrue(ef.process([instance()], event))
     # event is None
     self.assertEqual(ef.process('resources'), 'resources')
     # event is not None, but is not "true" either
     self.assertEqual(ef.process('resources', []), [])
示例#45
0
 def test_and(self):
     f = filters.factory({
         'and': [
             {'Architecture': 'x86_64'},
             {'Color': 'green'}]})
     results = [instance(Architecture='x86_64', Color='green')]
     self.assertEqual(
         f.process(results),
         results)
     self.assertEqual(
         f.process([
             instance(
                 Architecture='x86_64',
                 Color='blue')]),
         [])
     self.assertEqual(
         f.process([
             instance(
                 Architecture='x86_64')]),
         [])
示例#46
0
 def test_complex_value_filter(self):
     self.assertFilter(
         {"key": (
             "length(BlockDeviceMappings"
             "[?Ebs.DeleteOnTermination == `true`]"
             ".Ebs.DeleteOnTermination)"),
          "value": 0,
          "type": "value",
          "op": "gt"},
         instance(),
         True)
示例#47
0
 def test_offhours_get_value(self):
     off = OffHour({'default_tz': 'ct'})
     i = instance(Tags=[
         {'Key': 'maid_offhours', 'Value': 'Offhours tz=PT'}])
     self.assertEqual(off.get_tag_value(i), "offhours tz=pt")
     self.assertFalse(off.parser.has_resource_schedule(
         off.get_tag_value(i)))
     self.assertTrue(off.parser.keys_are_valid(
         off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(
         off.get_tag_value(i)), {'tz': 'pt'})
示例#48
0
 def test_offhour_weekend_support(self):
     start_day = 26
     t = datetime.datetime(
         year=2016, day=start_day, month=2, hour=19, minute=20)
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
     f = OffHour({})
     results = []
     with mock_datetime_now(t, datetime) as dt:
         for n in range(0, 4):
             dt.target = t.replace(day=start_day+n)
             results.append(f(i))
     self.assertEqual(results, [True, False, False, True])
示例#49
0
 def test_offhours_get_value(self):
     off = OffHour({'default_tz': 'ct'})
     i = instance(Tags=[{
         'Key': 'maid_offhours',
         'Value': 'Offhours tz=PT'
     }])
     self.assertEqual(off.get_tag_value(i), "offhours tz=pt")
     self.assertFalse(
         off.parser.has_resource_schedule(off.get_tag_value(i), 'off'))
     self.assertTrue(off.parser.keys_are_valid(off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(off.get_tag_value(i)),
                      {'tz': 'pt'})
示例#50
0
 def test_process(self):
     f = OffHour({'opt-out': True})
     instances = [
         instance(Tags=[]),
         instance(Tags=[{
             'Key': 'maid_offhours',
             'Value': 'off'
         }]),
         instance(Tags=[{
             'Key': 'maid_offhours',
             'Value': "off=(m-f,5);zebrablue,on=(t-w,5)"
         }])
     ]
     t = datetime.datetime(year=2015,
                           month=12,
                           day=1,
                           hour=19,
                           minute=5,
                           tzinfo=zoneinfo.gettz('America/New_York'))
     with mock_datetime_now(t, datetime):
         self.assertEqual(f.process(instances), [instances[0]])
示例#51
0
    def test_filters(self):
        ec2 = self.get_manager(
            {'filters': [{
                'tag:CMDBEnvironment': 'absent'
            }]})

        self.assertEqual(
            len(
                ec2.filter_resources(
                    [instance(Tags=[{
                        "Key": "ASV",
                        "Value": "xyz"
                    }])])), 1)

        self.assertEqual(
            len(
                ec2.filter_resources([
                    instance(Tags=[{
                        "Key": "CMDBEnvironment",
                        "Value": "xyz"
                    }])
                ])), 0)
示例#52
0
 def test_everyday_offhour(self):
     # weekends on means we match times on the weekend
     start_day = 14  # sunday
     t = datetime.datetime(
         year=2016, day=start_day, month=8, hour=19, minute=20)
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
     f = OffHour({'weekends': False})
     results = []
     with mock_datetime_now(t, datetime) as dt:
         for n in range(7):
             dt.target = t.replace(day=start_day+n)
             results.append(f(i))
     self.assertEqual(results, [True] * 7)
示例#53
0
 def test_offhours_real_world_values(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         results = [
             OffHour({})(i) for i in [
                 instance(Tags=[{
                     'Key': 'maid_offhours',
                     'Value': ''
                 }]),
                 instance(Tags=[{
                     'Key': 'maid_offhours',
                     'Value': '"Offhours tz=ET"'
                 }]),
                 instance(Tags=[{
                     'Key': 'maid_offhours',
                     'Value': 'Offhours tz=PT'
                 }])
             ]
         ]
         # unclear what this is really checking
         self.assertEqual(results, [True, True, True])
示例#54
0
 def test_complex_value_filter(self):
     self.assertFilter(
         {
             "key": ("length(BlockDeviceMappings"
                     "[?Ebs.DeleteOnTermination == `true`]"
                     ".Ebs.DeleteOnTermination)"),
             "value":
             0,
             "type":
             "value",
             "op":
             "gt"
         }, instance(), True)
示例#55
0
 def test_current_time_test(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
         f = OffHour({})
         p = f.get_tag_value(i)
         self.assertEqual(p, 'tz=est')
         tz = f.get_tz('est')
         self.assertTrue(
             str(tz) in ("tzfile('US/Eastern')",
                         "tzfile('America/New_York')"))
         self.assertEqual(datetime.datetime.now(tz), t)
         self.assertEqual(t.hour, 19)
示例#56
0
 def test_offhour_weekend_support(self):
     start_day = 26
     t = datetime.datetime(year=2016,
                           day=start_day,
                           month=2,
                           hour=19,
                           minute=20)
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
     f = OffHour({})
     results = []
     with mock_datetime_now(t, datetime) as dt:
         for n in range(0, 4):
             dt.target = t.replace(day=start_day + n)
             results.append(f(i))
     self.assertEqual(results, [True, False, False, True])
示例#57
0
 def test_everyday_offhour(self):
     # weekends on means we match times on the weekend
     start_day = 14  # sunday
     t = datetime.datetime(year=2016,
                           day=start_day,
                           month=8,
                           hour=19,
                           minute=20)
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
     f = OffHour({'weekends': False})
     results = []
     with mock_datetime_now(t, datetime) as dt:
         for n in range(7):
             dt.target = t.replace(day=start_day + n)
             results.append(f(i))
     self.assertEqual(results, [True] * 7)
示例#58
0
    def xtest_time_match_stops_after_skew(self):
        hour = 7
        t = datetime.datetime(year=2015,
                              month=12,
                              day=1,
                              hour=hour,
                              minute=5,
                              tzinfo=zoneinfo.gettz('America/New_York'))
        i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
        f = OnHour({'skew': 1})
        results = []

        with mock_datetime_now(t, datetime) as dt:
            for n in range(0, 4):
                dt.target = t.replace(hour=hour + n)
                results.append(f(i))
        self.assertEqual(results, [True, True, False, False])
示例#59
0
 def test_weekends_only_offhour_support(self):
     # start day is a sunday, weekend only means we only stop
     # on friday evening.
     start_day = 14
     t = datetime.datetime(year=2016,
                           day=start_day,
                           month=8,
                           hour=7,
                           minute=20)
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
     f = OnHour({'weekends-only': True})
     results = []
     with mock_datetime_now(t, datetime) as dt:
         for n in range(7):
             dt.target = t.replace(day=start_day + n)
             results.append(f(i))
     self.assertEqual(results,
                      [False, True, False, False, False, False, False])
示例#60
0
    def test_opt_in_behavior(self):
        # Given the addition of opt out behavior, verify if its
        # not configured that we don't touch an instance that
        # has no downtime tag
        t = datetime.datetime(year=2015,
                              month=12,
                              day=1,
                              hour=19,
                              minute=5,
                              tzinfo=zoneinfo.gettz('America/New_York'))
        i = instance(Tags=[])
        f = OffHour({})

        with mock_datetime_now(t, datetime):
            self.assertEqual(f(i), False)
            t = datetime.datetime(year=2015,
                                  month=12,
                                  day=1,
                                  hour=7,
                                  minute=5,
                                  tzinfo=zoneinfo.gettz('America/New_York'))
            f = OnHour({})
            self.assertEqual(f(i), False)