File: test_cli_mgmt_imagebuilder.py

package info (click to toggle)
python-azure 20201208%2Bgit-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,437,920 kB
  • sloc: python: 4,287,452; javascript: 269; makefile: 198; sh: 187; xml: 106
file content (129 lines) | stat: -rw-r--r-- 5,301 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
# 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.
#--------------------------------------------------------------------------


# TEST SCENARIO COVERAGE
# ----------------------
# Methods Total   : 10
# Methods Covered : 9
# Examples Total  : 11
# Examples Tested : 11
# Coverage %      : 90
# ----------------------

import unittest

import azure.mgmt.imagebuilder
from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer

AZURE_LOCATION = 'eastus'
IMAGE_TEMPLATE_NAME = "MyImageTemplate"
IMAGE_NAME = 'MyImage'
RUN_OUTPUT_NAME = 'image_it_pir_1'

# make sure to create user identity with this doc before running live test: https://github.com/danielsollondon/azvmimagebuilder/tree/master/quickquickstarts/0_Creating_a_Custom_Windows_Managed_Image#step-2--permissions-create-user-idenity-and-role-for-aib
IDENTITY_NAME = 'aibIdentity1588309486'

class MgmtImageBuilderClientTest(AzureMgmtTestCase):

    def setUp(self):
        super(MgmtImageBuilderClientTest, self).setUp()
        self.mgmt_client = self.create_mgmt_client(
            azure.mgmt.imagebuilder.ImageBuilderClient
        )
    
    @ResourceGroupPreparer(location=AZURE_LOCATION)
    def test_imagebuilder(self, resource_group):

        # Create an Image Template with a user assigned identity configured[put]
        BODY = {
          "location": "eastus",
          "tags": {
            "imagetemplate_tag1": "IT_T1",
            "imagetemplate_tag2": "IT_T2"
          },
          "identity": {
            "type": "UserAssigned",
            "user_assigned_identities": { "/subscriptions/{}/resourceGroups/{}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{}".format(self.settings.SUBSCRIPTION_ID, resource_group.name, IDENTITY_NAME): {}}
          },
          "properties": {
            "source": {
              "type": "ManagedImage",
              "image_id": "/subscriptions/" + self.settings.SUBSCRIPTION_ID + "/resourceGroups/" + resource_group.name + "/providers/Microsoft.Compute/images/" + IMAGE_NAME + ""
            },
            "customize": [
              {
                "type": "Shell",
                "name": "Shell Customizer Example",
                "script_uri": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/619a017566f2bdb2d9a85afd1fe2018bed822cc8/sdk/compute/azure-mgmt-imagebuilder/tests/script.sh"
              }
            ],
            "distribute": [
              {
                "type": "ManagedImage",
                "location": "eastus",
                "run_output_name": "image_it_pir_1",
                "image_id": "/subscriptions/" + self.settings.SUBSCRIPTION_ID + "/resourceGroups/" + resource_group.name + "/providers/Microsoft.Compute/images/" + IMAGE_NAME + "",
                "artifact_tags": {
                  "tag_name": "value"
                }
              }
            ],
            "vm_profile": {
              "vm_size": "Standard_D2s_v3"
            }
          }
        }
        result = self.mgmt_client.virtual_machine_image_templates.create_or_update(BODY, resource_group.name, IMAGE_TEMPLATE_NAME)
        result = result.result()

        # Retrieve an Image Template.[get]
        result = self.mgmt_client.virtual_machine_image_templates.get(resource_group.name, IMAGE_TEMPLATE_NAME)

        # List images by resource group[get]
        result = self.mgmt_client.virtual_machine_image_templates.list_by_resource_group(resource_group.name)

        # List images by subscription.[get]
        result = self.mgmt_client.virtual_machine_image_templates.list()

        # Create image(s) from existing imageTemplate.[post]
        result = self.mgmt_client.virtual_machine_image_templates.run(resource_group.name, IMAGE_TEMPLATE_NAME)
        result = result.result()

        # Retrieve single runOutput[get]
        result = self.mgmt_client.virtual_machine_image_templates.get_run_output(resource_group.name, IMAGE_TEMPLATE_NAME, RUN_OUTPUT_NAME)

        # Retrieve a list of all outputs created by the last run of an Image Template[get]
        result = self.mgmt_client.virtual_machine_image_templates.list_run_outputs(resource_group.name, IMAGE_TEMPLATE_NAME)

        # Remove identities for an Image Template.[patch]
        BODY = {
          "identity": {
            "type": "None"
          }
        }
        #result = self.mgmt_client.virtual_machine_image_templates.update(resource_group.name, IMAGE_TEMPLATE_NAME, BODY)
        #result = result.result()

        # Update the tags for an Image Template.[patch]
        BODY = {
          "tags": {
            "new-tag": "new-value"
          }
        }
        #result = self.mgmt_client.virtual_machine_image_templates.update(resource_group.name, IMAGE_TEMPLATE_NAME, BODY)
        #result = result.result()

        # Delete an Image Template.[delete]
        result = self.mgmt_client.virtual_machine_image_templates.delete(resource_group.name, IMAGE_TEMPLATE_NAME)
        result = result.result()


#------------------------------------------------------------------------------
if __name__ == '__main__':
    unittest.main()