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

1# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md 

2 

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 

7 

8 

9class CDIConfig(Resource): 

10 """ 

11 CDIConfig provides a user configuration for CDI 

12 """ 

13 

14 api_group: str = Resource.ApiGroup.CDI_KUBEVIRT_IO 

15 

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. 

36 

37 feature_gates (List[Any]): FeatureGates are a list of specific enabled feature gates 

38 

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) 

42 

43 image_pull_secrets (List[Any]): The imagePullSecrets used to pull the container images 

44 

45 import_proxy (Dict[str, Any]): ImportProxy contains importer pod proxy configuration. 

46 

47 insecure_registries (List[Any]): InsecureRegistries is a list of TLS disabled registries 

48 

49 log_verbosity (int): LogVerbosity overrides the default verbosity level used to initialize 

50 loggers 

51 

52 pod_resource_requirements (Dict[str, Any]): ResourceRequirements describes the compute resource requirements. 

53 

54 preallocation (bool): Preallocation controls whether storage for DataVolumes should be 

55 allocated in advance. 

56 

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 

63 

64 tls_security_profile (Dict[str, Any]): TLSSecurityProfile is used by operators to apply cluster-wide TLS 

65 security settings to operands. 

66 

67 upload_proxy_url_override (str): Override the URL used when uploading to a DataVolume 

68 

69 """ 

70 super().__init__(**kwargs) 

71 

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 

84 

85 def to_dict(self) -> None: 

86 super().to_dict() 

87 

88 if not self.kind_dict and not self.yaml_file: 

89 self.res["spec"] = {} 

90 _spec = self.res["spec"] 

91 

92 if self.data_volume_ttl_seconds: 

93 _spec["dataVolumeTTLSeconds"] = self.data_volume_ttl_seconds 

94 

95 if self.feature_gates: 

96 _spec["featureGates"] = self.feature_gates 

97 

98 if self.filesystem_overhead: 

99 _spec["filesystemOverhead"] = self.filesystem_overhead 

100 

101 if self.image_pull_secrets: 

102 _spec["imagePullSecrets"] = self.image_pull_secrets 

103 

104 if self.import_proxy: 

105 _spec["importProxy"] = self.import_proxy 

106 

107 if self.insecure_registries: 

108 _spec["insecureRegistries"] = self.insecure_registries 

109 

110 if self.log_verbosity: 

111 _spec["logVerbosity"] = self.log_verbosity 

112 

113 if self.pod_resource_requirements: 

114 _spec["podResourceRequirements"] = self.pod_resource_requirements 

115 

116 if self.preallocation is not None: 

117 _spec["preallocation"] = self.preallocation 

118 

119 if self.scratch_space_storage_class: 

120 _spec["scratchSpaceStorageClass"] = self.scratch_space_storage_class 

121 

122 if self.tls_security_profile: 

123 _spec["tlsSecurityProfile"] = self.tls_security_profile 

124 

125 if self.upload_proxy_url_override: 

126 _spec["uploadProxyURLOverride"] = self.upload_proxy_url_override 

127 

128 # End of generated code 

129 

130 @property 

131 def scratch_space_storage_class_from_spec(self) -> str: 

132 return self.instance.spec.scratchSpaceStorageClass 

133 

134 @property 

135 def scratch_space_storage_class_from_status(self) -> str: 

136 return self.instance.status.scratchSpaceStorageClass 

137 

138 @property 

139 def upload_proxy_url(self) -> str: 

140 return self.instance.status.uploadProxyURL 

141 

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 

145 

146 Args: 

147 uploadproxy_url (str): upload proxy URL 

148 timeout (int): Time to wait for CDI Config. 

149 

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 

167 

168 return False