|
3 | 3 |
|
4 | 4 | import pytest |
5 | 5 | from kubernetes.dynamic import DynamicClient |
6 | | -from ocp_resources.data_science_pipelines_application import DataSciencePipelinesApplication |
7 | 6 | from ocp_resources.namespace import Namespace |
8 | 7 | from ocp_resources.persistent_volume_claim import PersistentVolumeClaim |
9 | 8 | from ocp_resources.pod import Pod |
10 | | -from ocp_resources.route import Route |
11 | | -from ocp_resources.secret import Secret |
12 | | -from ocp_resources.service import Service |
13 | | -from timeout_sampler import TimeoutSampler |
14 | 9 |
|
15 | 10 | from tests.llama_stack.eval.constants import DK_CUSTOM_DATASET_IMAGE |
16 | | -from tests.llama_stack.eval.utils import wait_for_dspa_pods |
17 | | -from utilities.constants import MinIo |
18 | 11 |
|
19 | 12 |
|
20 | 13 | @pytest.fixture(scope="class") |
@@ -117,141 +110,3 @@ def teardown_lmeval_job_pod(admin_client, model_namespace) -> None: |
117 | 110 | ]: |
118 | 111 | for pod in pods: |
119 | 112 | pod.delete() |
120 | | - |
121 | | - |
122 | | -@pytest.fixture(scope="class") |
123 | | -def dspa( |
124 | | - pytestconfig: pytest.Config, |
125 | | - admin_client: DynamicClient, |
126 | | - model_namespace: Namespace, |
127 | | - minio_pod: Pod, |
128 | | - minio_service: Service, |
129 | | - dspa_s3_secret: Secret, |
130 | | - teardown_resources: bool, |
131 | | -) -> Generator[DataSciencePipelinesApplication, Any, Any]: |
132 | | - """ |
133 | | - Creates a DataSciencePipelinesApplication with MinIO object storage. |
134 | | - """ |
135 | | - |
136 | | - dspa_resource = DataSciencePipelinesApplication( |
137 | | - client=admin_client, |
138 | | - name="dspa", |
139 | | - namespace=model_namespace.name, |
140 | | - dsp_version="v2", |
141 | | - pod_to_pod_tls=True, |
142 | | - api_server={ |
143 | | - "deploy": True, |
144 | | - "enableOauth": True, |
145 | | - "enableSamplePipeline": False, |
146 | | - "cacheEnabled": True, |
147 | | - "artifactSignedURLExpirySeconds": 60, |
148 | | - "pipelineStore": "kubernetes", |
149 | | - }, |
150 | | - database={ |
151 | | - "disableHealthCheck": False, |
152 | | - "mariaDB": { |
153 | | - "deploy": True, |
154 | | - "pipelineDBName": "mlpipeline", |
155 | | - "pvcSize": "10Gi", |
156 | | - "username": "mlpipeline", |
157 | | - }, |
158 | | - }, |
159 | | - object_storage={ |
160 | | - "disableHealthCheck": False, |
161 | | - "enableExternalRoute": False, |
162 | | - "externalStorage": { |
163 | | - "bucket": "ods-ci-ds-pipelines", |
164 | | - "host": f"{minio_service.instance.spec.clusterIP}:{MinIo.Metadata.DEFAULT_PORT}", |
165 | | - "region": "us-east-1", |
166 | | - "scheme": "http", |
167 | | - "s3CredentialsSecret": { |
168 | | - "accessKey": "AWS_ACCESS_KEY_ID", # pragma: allowlist secret |
169 | | - "secretKey": "AWS_SECRET_ACCESS_KEY", # pragma: allowlist secret |
170 | | - "secretName": dspa_s3_secret.name, |
171 | | - }, |
172 | | - }, |
173 | | - }, |
174 | | - persistence_agent={ |
175 | | - "deploy": True, |
176 | | - "numWorkers": 2, |
177 | | - }, |
178 | | - scheduled_workflow={ |
179 | | - "deploy": True, |
180 | | - "cronScheduleTimezone": "UTC", |
181 | | - }, |
182 | | - ensure_exists=pytestconfig.option.post_upgrade, |
183 | | - teardown=teardown_resources, |
184 | | - ) |
185 | | - if pytestconfig.option.post_upgrade: |
186 | | - wait_for_dspa_pods( |
187 | | - admin_client=admin_client, |
188 | | - namespace=model_namespace.name, |
189 | | - dspa_name=dspa_resource.name, |
190 | | - ) |
191 | | - yield dspa_resource |
192 | | - dspa_resource.clean_up() |
193 | | - else: |
194 | | - with dspa_resource: |
195 | | - wait_for_dspa_pods( |
196 | | - admin_client=admin_client, |
197 | | - namespace=model_namespace.name, |
198 | | - dspa_name=dspa_resource.name, |
199 | | - ) |
200 | | - yield dspa_resource |
201 | | - |
202 | | - |
203 | | -@pytest.fixture(scope="class") |
204 | | -def dspa_s3_secret( |
205 | | - pytestconfig: pytest.Config, |
206 | | - admin_client: DynamicClient, |
207 | | - model_namespace: Namespace, |
208 | | - minio_service: Service, |
209 | | - teardown_resources: bool, |
210 | | -) -> Generator[Secret, Any, Any]: |
211 | | - """ |
212 | | - Creates a secret for DSPA S3 credentials using MinIO. |
213 | | - """ |
214 | | - secret = Secret( |
215 | | - client=admin_client, |
216 | | - name="dashboard-dspa-secret", |
217 | | - namespace=model_namespace.name, |
218 | | - string_data={ |
219 | | - "AWS_ACCESS_KEY_ID": MinIo.Credentials.ACCESS_KEY_VALUE, |
220 | | - "AWS_SECRET_ACCESS_KEY": MinIo.Credentials.SECRET_KEY_VALUE, |
221 | | - "AWS_DEFAULT_REGION": "us-east-1", |
222 | | - }, |
223 | | - ensure_exists=pytestconfig.option.post_upgrade, |
224 | | - teardown=teardown_resources, |
225 | | - ) |
226 | | - if pytestconfig.option.post_upgrade: |
227 | | - yield secret |
228 | | - secret.clean_up() |
229 | | - else: |
230 | | - with secret: |
231 | | - yield secret |
232 | | - |
233 | | - |
234 | | -@pytest.fixture(scope="class") |
235 | | -def dspa_route( |
236 | | - admin_client: DynamicClient, |
237 | | - model_namespace: Namespace, |
238 | | - dspa: DataSciencePipelinesApplication, |
239 | | -) -> Generator[Route, Any, Any]: |
240 | | - """ |
241 | | - Retrieves the Route for the DSPA API server. |
242 | | - """ |
243 | | - |
244 | | - def _get_dspa_route() -> Route | None: |
245 | | - routes = list( |
246 | | - Route.get( |
247 | | - client=admin_client, |
248 | | - namespace=model_namespace.name, |
249 | | - name="ds-pipeline-dspa", |
250 | | - ) |
251 | | - ) |
252 | | - return routes[0] if routes else None |
253 | | - |
254 | | - for route in TimeoutSampler(wait_timeout=240, sleep=5, func=_get_dspa_route): |
255 | | - if route: |
256 | | - yield route |
257 | | - return |
0 commit comments