Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/c7n_gcp/filters/timerange.py: 47%

30 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-12-08 06:51 +0000

1# Copyright The Cloud Custodian Authors. 

2# SPDX-License-Identifier: Apache-2.0 

3import datetime 

4from c7n.filters.core import Filter 

5from c7n.utils import type_schema 

6 

7""" 

8GC Filter to find resources based on time range 

9""" 

10 

11 

12class TimeRangeFilter(Filter): 

13 

14 schema = type_schema('time-range', 

15 value={'$ref': '#/definitions/filters_common/value'}) 

16 

17 datetime1_pattern = "%Y-%m-%dT%H:%M:%S.%fZ" 

18 datetime2_pattern = "%Y-%m-%dT%H:%M:%S" 

19 

20 permissions = () 

21 create_time_field_name = '' 

22 expire_time_field_name = '' 

23 

24 def process(self, resources, event=None): 

25 filtered_resources = [] 

26 value = self.data.get('value') 

27 

28 for resource in resources: 

29 create_time_pattern = self.datetime1_pattern 

30 expired_time_pattern = self.datetime1_pattern 

31 expired_time = resource[self.expire_time_field_name] 

32 create_time = resource[self.create_time_field_name] 

33 if '.' not in expired_time and 'Z' in expired_time: 

34 expired_time_pattern = self.datetime2_pattern 

35 expired_time = expired_time[:-1] 

36 if '.' not in create_time and 'Z' in create_time: 

37 create_time_pattern = self.datetime2_pattern 

38 create_time = create_time[:-1] 

39 

40 filtered_expired_time = datetime.datetime.strptime( 

41 expired_time, expired_time_pattern) 

42 filtered_start_time = datetime.datetime.strptime( 

43 create_time, create_time_pattern) 

44 result_time = filtered_expired_time - filtered_start_time 

45 if int(result_time.days) < value: 

46 filtered_resources.append(resource) 

47 

48 return filtered_resources