Coverage for ocp_resources/cdi_config.py: 0%
68 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
1# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md
3from typing import Any, Dict, List, Optional
4from ocp_resources.utils.constants import PROTOCOL_ERROR_EXCEPTION_DICT, TIMEOUT_4MINUTES
5from ocp_resources.resource import Resource
6from timeout_sampler import TimeoutSampler
9class CDIConfig(Resource):
10 """
11 CDIConfig provides a user configuration for CDI
12 """
14 api_group: str = Resource.ApiGroup.CDI_KUBEVIRT_IO
16 def __init__(
17 self,
18 data_volume_ttl_seconds: Optional[int] = None,
19 feature_gates: Optional[List[Any]] = None,
20 filesystem_overhead: Optional[Dict[str, Any]] = None,
21 image_pull_secrets: Optional[List[Any]] = None,
22 import_proxy: Optional[Dict[str, Any]] = None,
23 insecure_registries: Optional[List[Any]] = None,
24 log_verbosity: Optional[int] = None,
25 pod_resource_requirements: Optional[Dict[str, Any]] = None,
26 preallocation: Optional[bool] = None,
27 scratch_space_storage_class: Optional[str] = "",
28 tls_security_profile: Optional[Dict[str, Any]] = None,
29 upload_proxy_url_override: Optional[str] = "",
30 **kwargs: Any,
31 ) -> None:
32 """
33 Args:
34 data_volume_ttl_seconds (int): DataVolumeTTLSeconds is the time in seconds after DataVolume
35 completion it can be garbage collected. Disabled by default.
37 feature_gates (List[Any]): FeatureGates are a list of specific enabled feature gates
39 filesystem_overhead (Dict[str, Any]): FilesystemOverhead describes the space reserved for overhead when
40 using Filesystem volumes. A value is between 0 and 1, if not
41 defined it is 0.055 (5.5% overhead)
43 image_pull_secrets (List[Any]): The imagePullSecrets used to pull the container images
45 import_proxy (Dict[str, Any]): ImportProxy contains importer pod proxy configuration.
47 insecure_registries (List[Any]): InsecureRegistries is a list of TLS disabled registries
49 log_verbosity (int): LogVerbosity overrides the default verbosity level used to initialize
50 loggers
52 pod_resource_requirements (Dict[str, Any]): ResourceRequirements describes the compute resource requirements.
54 preallocation (bool): Preallocation controls whether storage for DataVolumes should be
55 allocated in advance.
57 scratch_space_storage_class (str): Override the storage class to used for scratch space during transfer
58 operations. The scratch space storage class is determined in the
59 following order: 1. value of scratchSpaceStorageClass, if that
60 doesn't exist, use the default storage class, if there is no
61 default storage class, use the storage class of the DataVolume, if
62 no storage class specified, use no storage class for scratch space
64 tls_security_profile (Dict[str, Any]): TLSSecurityProfile is used by operators to apply cluster-wide TLS
65 security settings to operands.
67 upload_proxy_url_override (str): Override the URL used when uploading to a DataVolume
69 """
70 super().__init__(**kwargs)
72 self.data_volume_ttl_seconds = data_volume_ttl_seconds
73 self.feature_gates = feature_gates
74 self.filesystem_overhead = filesystem_overhead
75 self.image_pull_secrets = image_pull_secrets
76 self.import_proxy = import_proxy
77 self.insecure_registries = insecure_registries
78 self.log_verbosity = log_verbosity
79 self.pod_resource_requirements = pod_resource_requirements
80 self.preallocation = preallocation
81 self.scratch_space_storage_class = scratch_space_storage_class
82 self.tls_security_profile = tls_security_profile
83 self.upload_proxy_url_override = upload_proxy_url_override
85 def to_dict(self) -> None:
86 super().to_dict()
88 if not self.kind_dict and not self.yaml_file:
89 self.res["spec"] = {}
90 _spec = self.res["spec"]
92 if self.data_volume_ttl_seconds:
93 _spec["dataVolumeTTLSeconds"] = self.data_volume_ttl_seconds
95 if self.feature_gates:
96 _spec["featureGates"] = self.feature_gates
98 if self.filesystem_overhead:
99 _spec["filesystemOverhead"] = self.filesystem_overhead
101 if self.image_pull_secrets:
102 _spec["imagePullSecrets"] = self.image_pull_secrets
104 if self.import_proxy:
105 _spec["importProxy"] = self.import_proxy
107 if self.insecure_registries:
108 _spec["insecureRegistries"] = self.insecure_registries
110 if self.log_verbosity:
111 _spec["logVerbosity"] = self.log_verbosity
113 if self.pod_resource_requirements:
114 _spec["podResourceRequirements"] = self.pod_resource_requirements
116 if self.preallocation is not None:
117 _spec["preallocation"] = self.preallocation
119 if self.scratch_space_storage_class:
120 _spec["scratchSpaceStorageClass"] = self.scratch_space_storage_class
122 if self.tls_security_profile:
123 _spec["tlsSecurityProfile"] = self.tls_security_profile
125 if self.upload_proxy_url_override:
126 _spec["uploadProxyURLOverride"] = self.upload_proxy_url_override
128 # End of generated code
130 @property
131 def scratch_space_storage_class_from_spec(self) -> str:
132 return self.instance.spec.scratchSpaceStorageClass
134 @property
135 def scratch_space_storage_class_from_status(self) -> str:
136 return self.instance.status.scratchSpaceStorageClass
138 @property
139 def upload_proxy_url(self) -> str:
140 return self.instance.status.uploadProxyURL
142 def wait_until_upload_url_changed(self, uploadproxy_url: str, timeout: int = TIMEOUT_4MINUTES) -> bool:
143 """
144 Wait until upload proxy url is changed
146 Args:
147 uploadproxy_url (str): upload proxy URL
148 timeout (int): Time to wait for CDI Config.
150 Returns:
151 bool: True if url is equal to uploadProxyURL.
152 """
153 self.logger.info(f"Wait for {self.kind} {self.name} to ensure current URL == uploadProxyURL")
154 samples = TimeoutSampler(
155 wait_timeout=timeout,
156 sleep=1,
157 exceptions_dict=PROTOCOL_ERROR_EXCEPTION_DICT,
158 func=self.api.get,
159 field_selector=f"metadata.name=={self.name}",
160 )
161 for sample in samples:
162 if sample.items:
163 status = sample.items[0].status
164 current_url: str = status.uploadProxyURL
165 if current_url == uploadproxy_url:
166 return True
168 return False