File: disable_test_cli_mgmt_containerregistry_task.py

package info (click to toggle)
python-azure 20250603%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 851,724 kB
  • sloc: python: 7,362,925; ansic: 804; javascript: 287; makefile: 195; sh: 145; xml: 109
file content (513 lines) | stat: -rw-r--r-- 23,983 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
# coding: utf-8

# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------

# Current Operation Coverage:
#   Runs: 5/5
#   Tasks: 6/6
#   TaskRuns: 6/6
#   PipelineRuns: 1/4
#   ImportPipelines: 4/4
#   ExportPipelines: 4/4

import unittest

import azure.mgmt.containerregistry
from devtools_testutils import AzureMgmtTestCase, RandomNameResourceGroupPreparer

AZURE_LOCATION = "eastus"


class MgmtRegistryTest(AzureMgmtTestCase):
    def setUp(self):
        super(MgmtRegistryTest, self).setUp()
        self.mgmt_client = self.create_mgmt_client(
            azure.mgmt.containerregistry.ContainerRegistryManagementClient,
            api_version="2019-12-01-preview",  # test the latest version
        )

    @unittest.skip("hard to test")
    @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
    def test_pipelines(self, resource_group):

        # UNIQUE = resource_group.name[-4:]
        SUBSCRIPTION_ID = self.settings.SUBSCRIPTION_ID
        RESOURCE_GROUP = resource_group.name
        REGISTRY_NAME = "myRegistry"
        PIPELINE_RUN_NAME = "myPipelineRun"
        IMPORT_PIPELINE_NAME = "myImportPipeline"
        EXPORT_PIPELINE_NAME = "myExportPipeline"

        # --------------------------------------------------------------------------
        # /Registries/put/RegistryCreate[put]
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            "tags": {"key": "value"},
            "sku": {"name": "Premium"},  # Pipelineruns need Premium
            "admin_user_enabled": False,
        }
        result = self.mgmt_client.registries.begin_create(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, registry=BODY
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /ImportPipelines/put/ImportPipelineCreate[put]
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            "identity": {
                "type": "SystemAssigned"
                # "user_assigned_identities": {}
            },
            "source": {
                "type": "AzureStorageBlobContainer",
                "uri": "https://accountname.blob.core.windows.net/containername",
                "key_vault_uri": "https://myvault.vault.azure.net/secrets/acrimportsas",
            },
            "options": ["OverwriteTags", "DeleteSourceBlobOnSuccess", "ContinueOnErrors"],
        }
        result = self.mgmt_client.import_pipelines.begin_create(
            resource_group_name=RESOURCE_GROUP,
            registry_name=REGISTRY_NAME,
            import_pipeline_name=IMPORT_PIPELINE_NAME,
            import_pipeline_create_parameters=BODY,
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /ExportPipelines/put/ExportPipelineCreate[put]
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            "identity": {"type": "SystemAssigned"},
            "target": {
                "type": "AzureStorageBlobContainer",
                "uri": "https://accountname.blob.core.windows.net/containername",
                "key_vault_uri": "https://myvault.vault.azure.net/secrets/acrexportsas",
            },
            "options": ["OverwriteBlobs"],
        }
        result = self.mgmt_client.export_pipelines.begin_create(
            resource_group_name=RESOURCE_GROUP,
            registry_name=REGISTRY_NAME,
            export_pipeline_name=EXPORT_PIPELINE_NAME,
            export_pipeline_create_parameters=BODY,
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /PipelineRuns/put/PipelineRunCreate_Import[put]
        # --------------------------------------------------------------------------
        BODY = {
            "request": {
                "pipeline_resource_id": "/subscriptions/"
                + SUBSCRIPTION_ID
                + "/resourceGroups/"
                + RESOURCE_GROUP
                + "/providers/Microsoft.ContainerRegistry/registries/"
                + REGISTRY_NAME
                + "/importPipelines/"
                + IMPORT_PIPELINE_NAME,
                "source": {"type": "AzureStorageBlob", "name": "myblob.tar.gz"},
                "catalog_digest": "sha256@",
            },
            "force_update_tag": "2020-03-04T17:23:21.9261521+00:00",
        }
        # result = self.mgmt_client.pipeline_runs.begin_create(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, pipeline_run_name=PIPELINE_RUN_NAME, pipeline_run_create_parameters=BODY)
        # result = result.result()

        # --------------------------------------------------------------------------
        # /PipelineRuns/get/PipelineRunGet[get]
        # --------------------------------------------------------------------------
        # result = self.mgmt_client.pipeline_runs.get(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, pipeline_run_name=PIPELINE_RUN_NAME)

        # --------------------------------------------------------------------------
        # /ImportPipelines/get/ImportPipelineGet[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.import_pipelines.get(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, import_pipeline_name=IMPORT_PIPELINE_NAME
        )

        # --------------------------------------------------------------------------
        # /ExportPipelines/get/ExportPipelineGet[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.export_pipelines.get(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, export_pipeline_name=EXPORT_PIPELINE_NAME
        )

        # --------------------------------------------------------------------------
        # /PipelineRuns/get/PipelineRunList[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.pipeline_runs.list(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME)

        # --------------------------------------------------------------------------
        # /ImportPipelines/get/ImportPipelineList[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.import_pipelines.list(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME)

        # --------------------------------------------------------------------------
        # /ExportPipelines/get/ExportPipelineList[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.export_pipelines.list(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME)

        # --------------------------------------------------------------------------
        # /PipelineRuns/delete/PipelineRunDelete[delete]
        # --------------------------------------------------------------------------
        # result = self.mgmt_client.pipeline_runs.begin_delete(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, pipeline_run_name=PIPELINE_RUN_NAME)
        # result = result.result()

        # --------------------------------------------------------------------------
        # /ImportPipelines/delete/ImportPipelineDelete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.import_pipelines.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, import_pipeline_name=IMPORT_PIPELINE_NAME
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /ExportPipelines/delete/ExportPipelineDelete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.export_pipelines.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, export_pipeline_name=EXPORT_PIPELINE_NAME
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Registries/delete/RegistryDelete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.registries.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME
        )
        result = result.result()

    @unittest.skip("hard to test")
    @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
    def test_task_run(self, resource_group):

        # UNIQUE = resource_group.name[-4:]
        RESOURCE_GROUP = resource_group.name
        REGISTRY_NAME = "myRegistry"
        TASK_RUN_NAME = "myTaskRun"

        # --------------------------------------------------------------------------
        # /Registries/put/RegistryCreate[put]
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            "tags": {"key": "value"},
            "sku": {"name": "Premium"},  # Taskruns need Premium
            "admin_user_enabled": False,
        }
        result = self.mgmt_client.registries.begin_create(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, registry=BODY
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /TaskRuns/put/TaskRuns_Create[put] (TODO: add to swagger)
        # --------------------------------------------------------------------------
        BODY = {
            "force_update_tag": "test",
            "run_request": {
                "type": "DockerBuildRequest",
                "image_names": ["testtaskrun:v1"],
                "is_push_enabled": True,
                "no_cache": False,
                "docker_file_path": "Dockerfile",
                "platform": {"os": "linux", "architecture": "amd64"},
                "source_location": "https://github.com/Azure-Samples/acr-build-helloworld-node.git",
                "is_archive_enabled": True,
            },
        }
        result = self.mgmt_client.task_runs.begin_create(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_run_name=TASK_RUN_NAME, task_run=BODY
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /TaskRuns/get/TaskRuns_Get[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.task_runs.get(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_run_name=TASK_RUN_NAME
        )

        RUN_ID = result.run_result.run_id

        # --------------------------------------------------------------------------
        # /Runs/get/Runs_Get[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.runs.get(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, run_id=RUN_ID
        )

        # --------------------------------------------------------------------------
        # /TaskRuns/get/TaskRuns_List[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.task_runs.list(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME)

        # --------------------------------------------------------------------------
        # /Runs/get/Runs_List[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.runs.list(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, top="10")

        # --------------------------------------------------------------------------
        # /TaskRuns/post/TaskRuns_GetDetails[post]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.task_runs.get_details(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_run_name=TASK_RUN_NAME
        )

        # --------------------------------------------------------------------------
        # /Runs/post/Runs_GetLogSasUrl[post]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.runs.get_log_sas_url(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, run_id=RUN_ID
        )

        # --------------------------------------------------------------------------
        # /Runs/post/Runs_Cancel[post]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.runs.begin_cancel(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, run_id=RUN_ID
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /TaskRuns/patch/TaskRuns_Update[patch] (TODO: add to swagger)
        # --------------------------------------------------------------------------
        BODY = {
            "force_update_tag": "test",
            "run_request": {
                "type": "DockerBuildRequest",
                "image_names": ["testtaskrun:v1"],
                "is_push_enabled": True,
                "no_cache": False,
                "docker_file_path": "Dockerfile",
                "platform": {"os": "linux", "architecture": "amd64"},
                "source_location": "https://github.com/Azure-Samples/acr-build-helloworld-node.git",
                "is_archive_enabled": True,
            },
        }
        result = self.mgmt_client.task_runs.begin_update(
            resource_group_name=RESOURCE_GROUP,
            registry_name=REGISTRY_NAME,
            task_run_name=TASK_RUN_NAME,
            update_parameters=BODY,
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Runs/post/Runs_Cancel[post]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.runs.begin_cancel(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, run_id=RUN_ID
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /TaskRuns/delete/TaskRuns_Delete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.task_runs.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_run_name=TASK_RUN_NAME
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Runs/patch/Runs_Update[patch]
        # --------------------------------------------------------------------------
        BODY = {"is_archive_enabled": True}
        result = self.mgmt_client.runs.begin_update(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, run_id=RUN_ID, run_update_parameters=BODY
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Registries/delete/RegistryDelete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.registries.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME
        )
        result = result.result()

    @unittest.skip("hard to test")
    @RandomNameResourceGroupPreparer(location=AZURE_LOCATION)
    def test_tasks(self, resource_group):

        SUBSCRIPTION_ID = self.settings.SUBSCRIPTION_ID
        # UNIQUE = resource_group.name[-4:]
        REGISTRY_NAME = "myRegistry"
        RESOURCE_GROUP = resource_group.name
        TASK_RUN_NAME = "myTaskRun"
        TASK_NAME = "myTask"

        # --------------------------------------------------------------------------
        # /Registries/put/RegistryCreate[put]
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            "tags": {"key": "value"},
            "sku": {"name": "Standard"},
            "admin_user_enabled": True,
        }
        result = self.mgmt_client.registries.begin_create(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, registry=BODY
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Tasks/put/Tasks_Create[put] (TODO: add to swagger)
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            #   "identity": {
            #     "type": "SystemAssigned"
            #   },
            "tags": {"testkey": "value"},
            "status": "Enabled",
            "platform": {"os": "Linux", "architecture": "amd64"},
            "agent_configuration": {"cpu": "2"},
            "step": {
                "type": "Docker",
                "context_path": "https://github.com/SteveLasker/node-helloworld",
                "image_names": ["testtask:v1"],
                "docker_file_path": "DockerFile",
                # "image_names": [
                #   "azurerest:testtag"
                # ],
                # "docker_file_path": "src/DockerFile",
                # "context_path": "src",
                "is_push_enabled": True,
                "no_cache": False,
                # "arguments": [
                #   {
                #     "name": "mytestargument",
                #     "value": "mytestvalue",
                #     "is_secret": False
                #   },
                #   {
                #     "name": "mysecrettestargument",
                #     "value": "mysecrettestvalue",
                #     "is_secret": True
                #   }
                # ]
            },
            "trigger": {
                "base_image_trigger": {
                    "name": "myBaseImageTrigger",
                    "base_image_trigger_type": "Runtime",
                    "update_trigger_payload_type": "Default",
                    "status": "Enabled",
                }
                # "timer_triggers": [
                #   {
                #     "name": "myTimerTrigger",
                #     "schedule": "30 9 * * 1-5"
                #   }
                # ],
                # "source_triggers": [
                #   {
                #     "name": "mySourceTrigger",
                #     "source_repository": {
                #       "source_control_type": "Github",
                #       "repository_url": "https://github.com/Azure/azure-rest-api-specs",
                #       "branch": "master",
                #       "source_control_auth_properties": {
                #         "token_type": "PAT",
                #         "token": "xxxxx"
                #       }
                #     },
                #     "source_trigger_events": [
                #       "commit"
                #     ]
                #   }
                # ],
                # "base_image_trigger": {
                #   "name": "myBaseImageTrigger",
                #   "base_image_trigger_type": "Runtime",
                #   "update_trigger_endpoint": "https://user:pass@mycicd.webhook.com?token=foo",
                #   "update_trigger_payload_type": "Token"
                # }
            },
        }
        result = self.mgmt_client.tasks.begin_create(
            resource_group_name=RESOURCE_GROUP,
            registry_name=REGISTRY_NAME,
            task_name=TASK_NAME,
            task_create_parameters=BODY,
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Tasks/get/Tasks_Get[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.tasks.get(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_name=TASK_NAME
        )

        # --------------------------------------------------------------------------
        # /Tasks/get/Tasks_List[get]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.tasks.list(resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME)

        # --------------------------------------------------------------------------
        # /Tasks/post/Tasks_GetDetails[post]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.tasks.get_details(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_name=TASK_NAME
        )

        # --------------------------------------------------------------------------
        # /Tasks/patch/Tasks_Update[patch] (TODO: add to swagger)
        # --------------------------------------------------------------------------
        BODY = {
            "location": AZURE_LOCATION,
            "tags": {"testkey": "value"},
            "status": "Enabled",
            "platform": {"os": "Linux", "architecture": "amd64"},
            "agent_configuration": {"cpu": "2"},
            "step": {
                "type": "Docker",
                "context_path": "https://github.com/SteveLasker/node-helloworld",
                "image_names": ["testtask:v1"],
                "docker_file_path": "DockerFile",
                "is_push_enabled": True,
                "no_cache": False,
            },
            "trigger": {
                "base_image_trigger": {
                    "name": "myBaseImageTrigger",
                    "base_image_trigger_type": "Runtime",
                    "update_trigger_payload_type": "Default",
                    "status": "Enabled",
                }
            },
        }
        result = self.mgmt_client.tasks.begin_update(
            resource_group_name=RESOURCE_GROUP,
            registry_name=REGISTRY_NAME,
            task_name=TASK_NAME,
            task_update_parameters=BODY,
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Tasks/delete/Tasks_Delete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.tasks.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME, task_name=TASK_NAME
        )
        result = result.result()

        # --------------------------------------------------------------------------
        # /Registries/delete/RegistryDelete[delete]
        # --------------------------------------------------------------------------
        result = self.mgmt_client.registries.begin_delete(
            resource_group_name=RESOURCE_GROUP, registry_name=REGISTRY_NAME
        )
        result = result.result()