Coverage for ocp_resources/utils.py: 18%

22 statements  

« prev     ^ index     » next       coverage.py v7.6.9, created at 2024-12-18 18:22 +0200

1import yaml 

2from simple_logger.logger import get_logger 

3 

4LOGGER = get_logger(name=__name__) 

5 

6 

7def skip_existing_resource_creation_teardown(resource, export_str, user_exported_args, check_exists=True): 

8 """ 

9 Args: 

10 resource (Resource): Resource to match against. 

11 export_str (str): The user export str. (REUSE_IF_RESOURCE_EXISTS or SKIP_RESOURCE_TEARDOWN) 

12 user_exported_args (str): Value of export_str. (os.environ.get) 

13 check_exists (bool): Check if resource exists before return. (applied only for REUSE_IF_RESOURCE_EXISTS) 

14 

15 Returns: 

16 Resource or None: If resource match. 

17 """ 

18 

19 def _return_resource(_resource, _check_exists, _msg): 

20 """ 

21 Return the resource if exists when got _check_exists else return None. 

22 If _check_exists=False returns the resource. 

23 """ 

24 if not _check_exists: # In case of SKIP_RESOURCE_TEARDOWN 

25 return _resource 

26 

27 elif _resource.exists: # In case of REUSE_IF_RESOURCE_EXISTS 

28 LOGGER.warning(_msg) 

29 return _resource 

30 

31 resource.to_dict() 

32 resource_name = resource.res["metadata"]["name"] 

33 resource_namespace = resource.res["metadata"].get("namespace") 

34 skip_create_warn_msg = ( 

35 f"Skip resource {resource.kind} {resource_name} creation, using existing one." 

36 f" Got {export_str}={user_exported_args}" 

37 ) 

38 user_args = yaml.safe_load(stream=user_exported_args) 

39 if resource.kind in user_args: 

40 _resource_args = user_args[resource.kind] 

41 if not _resource_args: 

42 # Match only by kind, user didn't send name and/or namespace. 

43 return _return_resource( 

44 _resource=resource, 

45 _check_exists=check_exists, 

46 _msg=skip_create_warn_msg, 

47 ) 

48 

49 for _name, _namespace in _resource_args.items(): 

50 if resource_name == _name and (resource_namespace == _namespace or not (resource_namespace and _namespace)): 

51 return _return_resource( 

52 _resource=resource, 

53 _check_exists=check_exists, 

54 _msg=skip_create_warn_msg, 

55 )