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
« 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
4LOGGER = get_logger(name=__name__)
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)
15 Returns:
16 Resource or None: If resource match.
17 """
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
27 elif _resource.exists: # In case of REUSE_IF_RESOURCE_EXISTS
28 LOGGER.warning(_msg)
29 return _resource
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 )
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 )