1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9from typing import Dict, List, Optional, Union
10
11import msrest.serialization
12
13from ._compute_management_client_enums import *
14
15
16class AccessUri(msrest.serialization.Model):
17    """A disk access SAS uri.
18
19    Variables are only populated by the server, and will be ignored when sending a request.
20
21    :ivar access_sas: A SAS uri for accessing a disk.
22    :vartype access_sas: str
23    """
24
25    _validation = {
26        'access_sas': {'readonly': True},
27    }
28
29    _attribute_map = {
30        'access_sas': {'key': 'accessSAS', 'type': 'str'},
31    }
32
33    def __init__(
34        self,
35        **kwargs
36    ):
37        super(AccessUri, self).__init__(**kwargs)
38        self.access_sas = None
39
40
41class ApiError(msrest.serialization.Model):
42    """Api error.
43
44    :param details: The Api error details.
45    :type details: list[~azure.mgmt.compute.v2019_11_01.models.ApiErrorBase]
46    :param innererror: The Api inner error.
47    :type innererror: ~azure.mgmt.compute.v2019_11_01.models.InnerError
48    :param code: The error code.
49    :type code: str
50    :param target: The target of the particular error.
51    :type target: str
52    :param message: The error message.
53    :type message: str
54    """
55
56    _attribute_map = {
57        'details': {'key': 'details', 'type': '[ApiErrorBase]'},
58        'innererror': {'key': 'innererror', 'type': 'InnerError'},
59        'code': {'key': 'code', 'type': 'str'},
60        'target': {'key': 'target', 'type': 'str'},
61        'message': {'key': 'message', 'type': 'str'},
62    }
63
64    def __init__(
65        self,
66        *,
67        details: Optional[List["ApiErrorBase"]] = None,
68        innererror: Optional["InnerError"] = None,
69        code: Optional[str] = None,
70        target: Optional[str] = None,
71        message: Optional[str] = None,
72        **kwargs
73    ):
74        super(ApiError, self).__init__(**kwargs)
75        self.details = details
76        self.innererror = innererror
77        self.code = code
78        self.target = target
79        self.message = message
80
81
82class ApiErrorBase(msrest.serialization.Model):
83    """Api error base.
84
85    :param code: The error code.
86    :type code: str
87    :param target: The target of the particular error.
88    :type target: str
89    :param message: The error message.
90    :type message: str
91    """
92
93    _attribute_map = {
94        'code': {'key': 'code', 'type': 'str'},
95        'target': {'key': 'target', 'type': 'str'},
96        'message': {'key': 'message', 'type': 'str'},
97    }
98
99    def __init__(
100        self,
101        *,
102        code: Optional[str] = None,
103        target: Optional[str] = None,
104        message: Optional[str] = None,
105        **kwargs
106    ):
107        super(ApiErrorBase, self).__init__(**kwargs)
108        self.code = code
109        self.target = target
110        self.message = message
111
112
113class CreationData(msrest.serialization.Model):
114    """Data used when creating a disk.
115
116    Variables are only populated by the server, and will be ignored when sending a request.
117
118    All required parameters must be populated in order to send to Azure.
119
120    :param create_option: Required. This enumerates the possible sources of a disk's creation.
121     Possible values include: "Empty", "Attach", "FromImage", "Import", "Copy", "Restore", "Upload".
122    :type create_option: str or ~azure.mgmt.compute.v2019_11_01.models.DiskCreateOption
123    :param storage_account_id: Required if createOption is Import. The Azure Resource Manager
124     identifier of the storage account containing the blob to import as a disk.
125    :type storage_account_id: str
126    :param image_reference: Disk source information.
127    :type image_reference: ~azure.mgmt.compute.v2019_11_01.models.ImageDiskReference
128    :param gallery_image_reference: Required if creating from a Gallery Image. The id of the
129     ImageDiskReference will be the ARM id of the shared galley image version from which to create a
130     disk.
131    :type gallery_image_reference: ~azure.mgmt.compute.v2019_11_01.models.ImageDiskReference
132    :param source_uri: If createOption is Import, this is the URI of a blob to be imported into a
133     managed disk.
134    :type source_uri: str
135    :param source_resource_id: If createOption is Copy, this is the ARM id of the source snapshot
136     or disk.
137    :type source_resource_id: str
138    :ivar source_unique_id: If this field is set, this is the unique id identifying the source of
139     this resource.
140    :vartype source_unique_id: str
141    :param upload_size_bytes: If createOption is Upload, this is the size of the contents of the
142     upload including the VHD footer. This value should be between 20972032 (20 MiB + 512 bytes for
143     the VHD footer) and 35183298347520 bytes (32 TiB + 512 bytes for the VHD footer).
144    :type upload_size_bytes: long
145    """
146
147    _validation = {
148        'create_option': {'required': True},
149        'source_unique_id': {'readonly': True},
150    }
151
152    _attribute_map = {
153        'create_option': {'key': 'createOption', 'type': 'str'},
154        'storage_account_id': {'key': 'storageAccountId', 'type': 'str'},
155        'image_reference': {'key': 'imageReference', 'type': 'ImageDiskReference'},
156        'gallery_image_reference': {'key': 'galleryImageReference', 'type': 'ImageDiskReference'},
157        'source_uri': {'key': 'sourceUri', 'type': 'str'},
158        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
159        'source_unique_id': {'key': 'sourceUniqueId', 'type': 'str'},
160        'upload_size_bytes': {'key': 'uploadSizeBytes', 'type': 'long'},
161    }
162
163    def __init__(
164        self,
165        *,
166        create_option: Union[str, "DiskCreateOption"],
167        storage_account_id: Optional[str] = None,
168        image_reference: Optional["ImageDiskReference"] = None,
169        gallery_image_reference: Optional["ImageDiskReference"] = None,
170        source_uri: Optional[str] = None,
171        source_resource_id: Optional[str] = None,
172        upload_size_bytes: Optional[int] = None,
173        **kwargs
174    ):
175        super(CreationData, self).__init__(**kwargs)
176        self.create_option = create_option
177        self.storage_account_id = storage_account_id
178        self.image_reference = image_reference
179        self.gallery_image_reference = gallery_image_reference
180        self.source_uri = source_uri
181        self.source_resource_id = source_resource_id
182        self.source_unique_id = None
183        self.upload_size_bytes = upload_size_bytes
184
185
186class Resource(msrest.serialization.Model):
187    """The Resource model definition.
188
189    Variables are only populated by the server, and will be ignored when sending a request.
190
191    All required parameters must be populated in order to send to Azure.
192
193    :ivar id: Resource Id.
194    :vartype id: str
195    :ivar name: Resource name.
196    :vartype name: str
197    :ivar type: Resource type.
198    :vartype type: str
199    :param location: Required. Resource location.
200    :type location: str
201    :param tags: A set of tags. Resource tags.
202    :type tags: dict[str, str]
203    """
204
205    _validation = {
206        'id': {'readonly': True},
207        'name': {'readonly': True},
208        'type': {'readonly': True},
209        'location': {'required': True},
210    }
211
212    _attribute_map = {
213        'id': {'key': 'id', 'type': 'str'},
214        'name': {'key': 'name', 'type': 'str'},
215        'type': {'key': 'type', 'type': 'str'},
216        'location': {'key': 'location', 'type': 'str'},
217        'tags': {'key': 'tags', 'type': '{str}'},
218    }
219
220    def __init__(
221        self,
222        *,
223        location: str,
224        tags: Optional[Dict[str, str]] = None,
225        **kwargs
226    ):
227        super(Resource, self).__init__(**kwargs)
228        self.id = None
229        self.name = None
230        self.type = None
231        self.location = location
232        self.tags = tags
233
234
235class Disk(Resource):
236    """Disk resource.
237
238    Variables are only populated by the server, and will be ignored when sending a request.
239
240    All required parameters must be populated in order to send to Azure.
241
242    :ivar id: Resource Id.
243    :vartype id: str
244    :ivar name: Resource name.
245    :vartype name: str
246    :ivar type: Resource type.
247    :vartype type: str
248    :param location: Required. Resource location.
249    :type location: str
250    :param tags: A set of tags. Resource tags.
251    :type tags: dict[str, str]
252    :ivar managed_by: A relative URI containing the ID of the VM that has the disk attached.
253    :vartype managed_by: str
254    :ivar managed_by_extended: List of relative URIs containing the IDs of the VMs that have the
255     disk attached. maxShares should be set to a value greater than one for disks to allow attaching
256     them to multiple VMs.
257    :vartype managed_by_extended: list[str]
258    :param sku: The disks sku name. Can be Standard_LRS, Premium_LRS, StandardSSD_LRS, or
259     UltraSSD_LRS.
260    :type sku: ~azure.mgmt.compute.v2019_11_01.models.DiskSku
261    :param zones: The Logical zone list for Disk.
262    :type zones: list[str]
263    :ivar time_created: The time when the disk was created.
264    :vartype time_created: ~datetime.datetime
265    :param os_type: The Operating System type. Possible values include: "Windows", "Linux".
266    :type os_type: str or ~azure.mgmt.compute.v2019_11_01.models.OperatingSystemTypes
267    :param hyper_v_generation: The hypervisor generation of the Virtual Machine. Applicable to OS
268     disks only. Possible values include: "V1", "V2".
269    :type hyper_v_generation: str or ~azure.mgmt.compute.v2019_11_01.models.HyperVGeneration
270    :param creation_data: Disk source information. CreationData information cannot be changed after
271     the disk has been created.
272    :type creation_data: ~azure.mgmt.compute.v2019_11_01.models.CreationData
273    :param disk_size_gb: If creationData.createOption is Empty, this field is mandatory and it
274     indicates the size of the disk to create. If this field is present for updates or creation with
275     other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a
276     running VM, and can only increase the disk's size.
277    :type disk_size_gb: int
278    :ivar disk_size_bytes: The size of the disk in bytes. This field is read only.
279    :vartype disk_size_bytes: long
280    :ivar unique_id: Unique Guid identifying the resource.
281    :vartype unique_id: str
282    :param encryption_settings_collection: Encryption settings collection used for Azure Disk
283     Encryption, can contain multiple encryption settings per disk or snapshot.
284    :type encryption_settings_collection:
285     ~azure.mgmt.compute.v2019_11_01.models.EncryptionSettingsCollection
286    :ivar provisioning_state: The disk provisioning state.
287    :vartype provisioning_state: str
288    :param disk_iops_read_write: The number of IOPS allowed for this disk; only settable for
289     UltraSSD disks. One operation can transfer between 4k and 256k bytes.
290    :type disk_iops_read_write: long
291    :param disk_m_bps_read_write: The bandwidth allowed for this disk; only settable for UltraSSD
292     disks. MBps means millions of bytes per second - MB here uses the ISO notation, of powers of
293     10.
294    :type disk_m_bps_read_write: long
295    :param disk_iops_read_only: The total number of IOPS that will be allowed across all VMs
296     mounting the shared disk as ReadOnly. One operation can transfer between 4k and 256k bytes.
297    :type disk_iops_read_only: long
298    :param disk_m_bps_read_only: The total throughput (MBps) that will be allowed across all VMs
299     mounting the shared disk as ReadOnly. MBps means millions of bytes per second - MB here uses
300     the ISO notation, of powers of 10.
301    :type disk_m_bps_read_only: long
302    :ivar disk_state: The state of the disk. Possible values include: "Unattached", "Attached",
303     "Reserved", "ActiveSAS", "ReadyToUpload", "ActiveUpload".
304    :vartype disk_state: str or ~azure.mgmt.compute.v2019_11_01.models.DiskState
305    :param encryption: Encryption property can be used to encrypt data at rest with customer
306     managed keys or platform managed keys.
307    :type encryption: ~azure.mgmt.compute.v2019_11_01.models.Encryption
308    :param max_shares: The maximum number of VMs that can attach to the disk at the same time.
309     Value greater than one indicates a disk that can be mounted on multiple VMs at the same time.
310    :type max_shares: int
311    :ivar share_info: Details of the list of all VMs that have the disk attached. maxShares should
312     be set to a value greater than one for disks to allow attaching them to multiple VMs.
313    :vartype share_info: list[~azure.mgmt.compute.v2019_11_01.models.ShareInfoElement]
314    """
315
316    _validation = {
317        'id': {'readonly': True},
318        'name': {'readonly': True},
319        'type': {'readonly': True},
320        'location': {'required': True},
321        'managed_by': {'readonly': True},
322        'managed_by_extended': {'readonly': True},
323        'time_created': {'readonly': True},
324        'disk_size_bytes': {'readonly': True},
325        'unique_id': {'readonly': True},
326        'provisioning_state': {'readonly': True},
327        'disk_state': {'readonly': True},
328        'share_info': {'readonly': True},
329    }
330
331    _attribute_map = {
332        'id': {'key': 'id', 'type': 'str'},
333        'name': {'key': 'name', 'type': 'str'},
334        'type': {'key': 'type', 'type': 'str'},
335        'location': {'key': 'location', 'type': 'str'},
336        'tags': {'key': 'tags', 'type': '{str}'},
337        'managed_by': {'key': 'managedBy', 'type': 'str'},
338        'managed_by_extended': {'key': 'managedByExtended', 'type': '[str]'},
339        'sku': {'key': 'sku', 'type': 'DiskSku'},
340        'zones': {'key': 'zones', 'type': '[str]'},
341        'time_created': {'key': 'properties.timeCreated', 'type': 'iso-8601'},
342        'os_type': {'key': 'properties.osType', 'type': 'str'},
343        'hyper_v_generation': {'key': 'properties.hyperVGeneration', 'type': 'str'},
344        'creation_data': {'key': 'properties.creationData', 'type': 'CreationData'},
345        'disk_size_gb': {'key': 'properties.diskSizeGB', 'type': 'int'},
346        'disk_size_bytes': {'key': 'properties.diskSizeBytes', 'type': 'long'},
347        'unique_id': {'key': 'properties.uniqueId', 'type': 'str'},
348        'encryption_settings_collection': {'key': 'properties.encryptionSettingsCollection', 'type': 'EncryptionSettingsCollection'},
349        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
350        'disk_iops_read_write': {'key': 'properties.diskIOPSReadWrite', 'type': 'long'},
351        'disk_m_bps_read_write': {'key': 'properties.diskMBpsReadWrite', 'type': 'long'},
352        'disk_iops_read_only': {'key': 'properties.diskIOPSReadOnly', 'type': 'long'},
353        'disk_m_bps_read_only': {'key': 'properties.diskMBpsReadOnly', 'type': 'long'},
354        'disk_state': {'key': 'properties.diskState', 'type': 'str'},
355        'encryption': {'key': 'properties.encryption', 'type': 'Encryption'},
356        'max_shares': {'key': 'properties.maxShares', 'type': 'int'},
357        'share_info': {'key': 'properties.shareInfo', 'type': '[ShareInfoElement]'},
358    }
359
360    def __init__(
361        self,
362        *,
363        location: str,
364        tags: Optional[Dict[str, str]] = None,
365        sku: Optional["DiskSku"] = None,
366        zones: Optional[List[str]] = None,
367        os_type: Optional[Union[str, "OperatingSystemTypes"]] = None,
368        hyper_v_generation: Optional[Union[str, "HyperVGeneration"]] = None,
369        creation_data: Optional["CreationData"] = None,
370        disk_size_gb: Optional[int] = None,
371        encryption_settings_collection: Optional["EncryptionSettingsCollection"] = None,
372        disk_iops_read_write: Optional[int] = None,
373        disk_m_bps_read_write: Optional[int] = None,
374        disk_iops_read_only: Optional[int] = None,
375        disk_m_bps_read_only: Optional[int] = None,
376        encryption: Optional["Encryption"] = None,
377        max_shares: Optional[int] = None,
378        **kwargs
379    ):
380        super(Disk, self).__init__(location=location, tags=tags, **kwargs)
381        self.managed_by = None
382        self.managed_by_extended = None
383        self.sku = sku
384        self.zones = zones
385        self.time_created = None
386        self.os_type = os_type
387        self.hyper_v_generation = hyper_v_generation
388        self.creation_data = creation_data
389        self.disk_size_gb = disk_size_gb
390        self.disk_size_bytes = None
391        self.unique_id = None
392        self.encryption_settings_collection = encryption_settings_collection
393        self.provisioning_state = None
394        self.disk_iops_read_write = disk_iops_read_write
395        self.disk_m_bps_read_write = disk_m_bps_read_write
396        self.disk_iops_read_only = disk_iops_read_only
397        self.disk_m_bps_read_only = disk_m_bps_read_only
398        self.disk_state = None
399        self.encryption = encryption
400        self.max_shares = max_shares
401        self.share_info = None
402
403
404class DiskEncryptionSet(Resource):
405    """disk encryption set resource.
406
407    Variables are only populated by the server, and will be ignored when sending a request.
408
409    All required parameters must be populated in order to send to Azure.
410
411    :ivar id: Resource Id.
412    :vartype id: str
413    :ivar name: Resource name.
414    :vartype name: str
415    :ivar type: Resource type.
416    :vartype type: str
417    :param location: Required. Resource location.
418    :type location: str
419    :param tags: A set of tags. Resource tags.
420    :type tags: dict[str, str]
421    :param identity: The managed identity for the disk encryption set. It should be given
422     permission on the key vault before it can be used to encrypt disks.
423    :type identity: ~azure.mgmt.compute.v2019_11_01.models.EncryptionSetIdentity
424    :param active_key: The key vault key which is currently used by this disk encryption set.
425    :type active_key: ~azure.mgmt.compute.v2019_11_01.models.KeyVaultAndKeyReference
426    :ivar previous_keys: A readonly collection of key vault keys previously used by this disk
427     encryption set while a key rotation is in progress. It will be empty if there is no ongoing key
428     rotation.
429    :vartype previous_keys: list[~azure.mgmt.compute.v2019_11_01.models.KeyVaultAndKeyReference]
430    :ivar provisioning_state: The disk encryption set provisioning state.
431    :vartype provisioning_state: str
432    """
433
434    _validation = {
435        'id': {'readonly': True},
436        'name': {'readonly': True},
437        'type': {'readonly': True},
438        'location': {'required': True},
439        'previous_keys': {'readonly': True},
440        'provisioning_state': {'readonly': True},
441    }
442
443    _attribute_map = {
444        'id': {'key': 'id', 'type': 'str'},
445        'name': {'key': 'name', 'type': 'str'},
446        'type': {'key': 'type', 'type': 'str'},
447        'location': {'key': 'location', 'type': 'str'},
448        'tags': {'key': 'tags', 'type': '{str}'},
449        'identity': {'key': 'identity', 'type': 'EncryptionSetIdentity'},
450        'active_key': {'key': 'properties.activeKey', 'type': 'KeyVaultAndKeyReference'},
451        'previous_keys': {'key': 'properties.previousKeys', 'type': '[KeyVaultAndKeyReference]'},
452        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
453    }
454
455    def __init__(
456        self,
457        *,
458        location: str,
459        tags: Optional[Dict[str, str]] = None,
460        identity: Optional["EncryptionSetIdentity"] = None,
461        active_key: Optional["KeyVaultAndKeyReference"] = None,
462        **kwargs
463    ):
464        super(DiskEncryptionSet, self).__init__(location=location, tags=tags, **kwargs)
465        self.identity = identity
466        self.active_key = active_key
467        self.previous_keys = None
468        self.provisioning_state = None
469
470
471class DiskEncryptionSetList(msrest.serialization.Model):
472    """The List disk encryption set operation response.
473
474    All required parameters must be populated in order to send to Azure.
475
476    :param value: Required. A list of disk encryption sets.
477    :type value: list[~azure.mgmt.compute.v2019_11_01.models.DiskEncryptionSet]
478    :param next_link: The uri to fetch the next page of disk encryption sets. Call ListNext() with
479     this to fetch the next page of disk encryption sets.
480    :type next_link: str
481    """
482
483    _validation = {
484        'value': {'required': True},
485    }
486
487    _attribute_map = {
488        'value': {'key': 'value', 'type': '[DiskEncryptionSet]'},
489        'next_link': {'key': 'nextLink', 'type': 'str'},
490    }
491
492    def __init__(
493        self,
494        *,
495        value: List["DiskEncryptionSet"],
496        next_link: Optional[str] = None,
497        **kwargs
498    ):
499        super(DiskEncryptionSetList, self).__init__(**kwargs)
500        self.value = value
501        self.next_link = next_link
502
503
504class DiskEncryptionSetUpdate(msrest.serialization.Model):
505    """disk encryption set update resource.
506
507    :param tags: A set of tags. Resource tags.
508    :type tags: dict[str, str]
509    :param active_key: Key Vault Key Url and vault id of KeK, KeK is optional and when provided is
510     used to unwrap the encryptionKey.
511    :type active_key: ~azure.mgmt.compute.v2019_11_01.models.KeyVaultAndKeyReference
512    """
513
514    _attribute_map = {
515        'tags': {'key': 'tags', 'type': '{str}'},
516        'active_key': {'key': 'properties.activeKey', 'type': 'KeyVaultAndKeyReference'},
517    }
518
519    def __init__(
520        self,
521        *,
522        tags: Optional[Dict[str, str]] = None,
523        active_key: Optional["KeyVaultAndKeyReference"] = None,
524        **kwargs
525    ):
526        super(DiskEncryptionSetUpdate, self).__init__(**kwargs)
527        self.tags = tags
528        self.active_key = active_key
529
530
531class DiskList(msrest.serialization.Model):
532    """The List Disks operation response.
533
534    All required parameters must be populated in order to send to Azure.
535
536    :param value: Required. A list of disks.
537    :type value: list[~azure.mgmt.compute.v2019_11_01.models.Disk]
538    :param next_link: The uri to fetch the next page of disks. Call ListNext() with this to fetch
539     the next page of disks.
540    :type next_link: str
541    """
542
543    _validation = {
544        'value': {'required': True},
545    }
546
547    _attribute_map = {
548        'value': {'key': 'value', 'type': '[Disk]'},
549        'next_link': {'key': 'nextLink', 'type': 'str'},
550    }
551
552    def __init__(
553        self,
554        *,
555        value: List["Disk"],
556        next_link: Optional[str] = None,
557        **kwargs
558    ):
559        super(DiskList, self).__init__(**kwargs)
560        self.value = value
561        self.next_link = next_link
562
563
564class DiskSku(msrest.serialization.Model):
565    """The disks sku name. Can be Standard_LRS, Premium_LRS, StandardSSD_LRS, or UltraSSD_LRS.
566
567    Variables are only populated by the server, and will be ignored when sending a request.
568
569    :param name: The sku name. Possible values include: "Standard_LRS", "Premium_LRS",
570     "StandardSSD_LRS", "UltraSSD_LRS".
571    :type name: str or ~azure.mgmt.compute.v2019_11_01.models.DiskStorageAccountTypes
572    :ivar tier: The sku tier.
573    :vartype tier: str
574    """
575
576    _validation = {
577        'tier': {'readonly': True},
578    }
579
580    _attribute_map = {
581        'name': {'key': 'name', 'type': 'str'},
582        'tier': {'key': 'tier', 'type': 'str'},
583    }
584
585    def __init__(
586        self,
587        *,
588        name: Optional[Union[str, "DiskStorageAccountTypes"]] = None,
589        **kwargs
590    ):
591        super(DiskSku, self).__init__(**kwargs)
592        self.name = name
593        self.tier = None
594
595
596class DiskUpdate(msrest.serialization.Model):
597    """Disk update resource.
598
599    :param tags: A set of tags. Resource tags.
600    :type tags: dict[str, str]
601    :param sku: The disks sku name. Can be Standard_LRS, Premium_LRS, StandardSSD_LRS, or
602     UltraSSD_LRS.
603    :type sku: ~azure.mgmt.compute.v2019_11_01.models.DiskSku
604    :param os_type: the Operating System type. Possible values include: "Windows", "Linux".
605    :type os_type: str or ~azure.mgmt.compute.v2019_11_01.models.OperatingSystemTypes
606    :param disk_size_gb: If creationData.createOption is Empty, this field is mandatory and it
607     indicates the size of the disk to create. If this field is present for updates or creation with
608     other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a
609     running VM, and can only increase the disk's size.
610    :type disk_size_gb: int
611    :param encryption_settings_collection: Encryption settings collection used be Azure Disk
612     Encryption, can contain multiple encryption settings per disk or snapshot.
613    :type encryption_settings_collection:
614     ~azure.mgmt.compute.v2019_11_01.models.EncryptionSettingsCollection
615    :param disk_iops_read_write: The number of IOPS allowed for this disk; only settable for
616     UltraSSD disks. One operation can transfer between 4k and 256k bytes.
617    :type disk_iops_read_write: long
618    :param disk_m_bps_read_write: The bandwidth allowed for this disk; only settable for UltraSSD
619     disks. MBps means millions of bytes per second - MB here uses the ISO notation, of powers of
620     10.
621    :type disk_m_bps_read_write: long
622    :param disk_iops_read_only: The total number of IOPS that will be allowed across all VMs
623     mounting the shared disk as ReadOnly. One operation can transfer between 4k and 256k bytes.
624    :type disk_iops_read_only: long
625    :param disk_m_bps_read_only: The total throughput (MBps) that will be allowed across all VMs
626     mounting the shared disk as ReadOnly. MBps means millions of bytes per second - MB here uses
627     the ISO notation, of powers of 10.
628    :type disk_m_bps_read_only: long
629    :param max_shares: The maximum number of VMs that can attach to the disk at the same time.
630     Value greater than one indicates a disk that can be mounted on multiple VMs at the same time.
631    :type max_shares: int
632    :param encryption: Encryption property can be used to encrypt data at rest with customer
633     managed keys or platform managed keys.
634    :type encryption: ~azure.mgmt.compute.v2019_11_01.models.Encryption
635    """
636
637    _attribute_map = {
638        'tags': {'key': 'tags', 'type': '{str}'},
639        'sku': {'key': 'sku', 'type': 'DiskSku'},
640        'os_type': {'key': 'properties.osType', 'type': 'str'},
641        'disk_size_gb': {'key': 'properties.diskSizeGB', 'type': 'int'},
642        'encryption_settings_collection': {'key': 'properties.encryptionSettingsCollection', 'type': 'EncryptionSettingsCollection'},
643        'disk_iops_read_write': {'key': 'properties.diskIOPSReadWrite', 'type': 'long'},
644        'disk_m_bps_read_write': {'key': 'properties.diskMBpsReadWrite', 'type': 'long'},
645        'disk_iops_read_only': {'key': 'properties.diskIOPSReadOnly', 'type': 'long'},
646        'disk_m_bps_read_only': {'key': 'properties.diskMBpsReadOnly', 'type': 'long'},
647        'max_shares': {'key': 'properties.maxShares', 'type': 'int'},
648        'encryption': {'key': 'properties.encryption', 'type': 'Encryption'},
649    }
650
651    def __init__(
652        self,
653        *,
654        tags: Optional[Dict[str, str]] = None,
655        sku: Optional["DiskSku"] = None,
656        os_type: Optional[Union[str, "OperatingSystemTypes"]] = None,
657        disk_size_gb: Optional[int] = None,
658        encryption_settings_collection: Optional["EncryptionSettingsCollection"] = None,
659        disk_iops_read_write: Optional[int] = None,
660        disk_m_bps_read_write: Optional[int] = None,
661        disk_iops_read_only: Optional[int] = None,
662        disk_m_bps_read_only: Optional[int] = None,
663        max_shares: Optional[int] = None,
664        encryption: Optional["Encryption"] = None,
665        **kwargs
666    ):
667        super(DiskUpdate, self).__init__(**kwargs)
668        self.tags = tags
669        self.sku = sku
670        self.os_type = os_type
671        self.disk_size_gb = disk_size_gb
672        self.encryption_settings_collection = encryption_settings_collection
673        self.disk_iops_read_write = disk_iops_read_write
674        self.disk_m_bps_read_write = disk_m_bps_read_write
675        self.disk_iops_read_only = disk_iops_read_only
676        self.disk_m_bps_read_only = disk_m_bps_read_only
677        self.max_shares = max_shares
678        self.encryption = encryption
679
680
681class Encryption(msrest.serialization.Model):
682    """Encryption at rest settings for disk or snapshot.
683
684    :param disk_encryption_set_id: ResourceId of the disk encryption set to use for enabling
685     encryption at rest.
686    :type disk_encryption_set_id: str
687    :param type: The type of key used to encrypt the data of the disk. Possible values include:
688     "EncryptionAtRestWithPlatformKey", "EncryptionAtRestWithCustomerKey".
689    :type type: str or ~azure.mgmt.compute.v2019_11_01.models.EncryptionType
690    """
691
692    _attribute_map = {
693        'disk_encryption_set_id': {'key': 'diskEncryptionSetId', 'type': 'str'},
694        'type': {'key': 'type', 'type': 'str'},
695    }
696
697    def __init__(
698        self,
699        *,
700        disk_encryption_set_id: Optional[str] = None,
701        type: Optional[Union[str, "EncryptionType"]] = None,
702        **kwargs
703    ):
704        super(Encryption, self).__init__(**kwargs)
705        self.disk_encryption_set_id = disk_encryption_set_id
706        self.type = type
707
708
709class EncryptionSetIdentity(msrest.serialization.Model):
710    """The managed identity for the disk encryption set. It should be given permission on the key vault before it can be used to encrypt disks.
711
712    Variables are only populated by the server, and will be ignored when sending a request.
713
714    :param type: The type of Managed Identity used by the DiskEncryptionSet. Only SystemAssigned is
715     supported. Possible values include: "SystemAssigned".
716    :type type: str or ~azure.mgmt.compute.v2019_11_01.models.DiskEncryptionSetIdentityType
717    :ivar principal_id: The object id of the Managed Identity Resource. This will be sent to the RP
718     from ARM via the x-ms-identity-principal-id header in the PUT request if the resource has a
719     systemAssigned(implicit) identity.
720    :vartype principal_id: str
721    :ivar tenant_id: The tenant id of the Managed Identity Resource. This will be sent to the RP
722     from ARM via the x-ms-client-tenant-id header in the PUT request if the resource has a
723     systemAssigned(implicit) identity.
724    :vartype tenant_id: str
725    """
726
727    _validation = {
728        'principal_id': {'readonly': True},
729        'tenant_id': {'readonly': True},
730    }
731
732    _attribute_map = {
733        'type': {'key': 'type', 'type': 'str'},
734        'principal_id': {'key': 'principalId', 'type': 'str'},
735        'tenant_id': {'key': 'tenantId', 'type': 'str'},
736    }
737
738    def __init__(
739        self,
740        *,
741        type: Optional[Union[str, "DiskEncryptionSetIdentityType"]] = None,
742        **kwargs
743    ):
744        super(EncryptionSetIdentity, self).__init__(**kwargs)
745        self.type = type
746        self.principal_id = None
747        self.tenant_id = None
748
749
750class EncryptionSettingsCollection(msrest.serialization.Model):
751    """Encryption settings for disk or snapshot.
752
753    All required parameters must be populated in order to send to Azure.
754
755    :param enabled: Required. Set this flag to true and provide DiskEncryptionKey and optional
756     KeyEncryptionKey to enable encryption. Set this flag to false and remove DiskEncryptionKey and
757     KeyEncryptionKey to disable encryption. If EncryptionSettings is null in the request object,
758     the existing settings remain unchanged.
759    :type enabled: bool
760    :param encryption_settings: A collection of encryption settings, one for each disk volume.
761    :type encryption_settings:
762     list[~azure.mgmt.compute.v2019_11_01.models.EncryptionSettingsElement]
763    :param encryption_settings_version: Describes what type of encryption is used for the disks.
764     Once this field is set, it cannot be overwritten. '1.0' corresponds to Azure Disk Encryption
765     with AAD app.'1.1' corresponds to Azure Disk Encryption.
766    :type encryption_settings_version: str
767    """
768
769    _validation = {
770        'enabled': {'required': True},
771    }
772
773    _attribute_map = {
774        'enabled': {'key': 'enabled', 'type': 'bool'},
775        'encryption_settings': {'key': 'encryptionSettings', 'type': '[EncryptionSettingsElement]'},
776        'encryption_settings_version': {'key': 'encryptionSettingsVersion', 'type': 'str'},
777    }
778
779    def __init__(
780        self,
781        *,
782        enabled: bool,
783        encryption_settings: Optional[List["EncryptionSettingsElement"]] = None,
784        encryption_settings_version: Optional[str] = None,
785        **kwargs
786    ):
787        super(EncryptionSettingsCollection, self).__init__(**kwargs)
788        self.enabled = enabled
789        self.encryption_settings = encryption_settings
790        self.encryption_settings_version = encryption_settings_version
791
792
793class EncryptionSettingsElement(msrest.serialization.Model):
794    """Encryption settings for one disk volume.
795
796    :param disk_encryption_key: Key Vault Secret Url and vault id of the disk encryption key.
797    :type disk_encryption_key: ~azure.mgmt.compute.v2019_11_01.models.KeyVaultAndSecretReference
798    :param key_encryption_key: Key Vault Key Url and vault id of the key encryption key.
799     KeyEncryptionKey is optional and when provided is used to unwrap the disk encryption key.
800    :type key_encryption_key: ~azure.mgmt.compute.v2019_11_01.models.KeyVaultAndKeyReference
801    """
802
803    _attribute_map = {
804        'disk_encryption_key': {'key': 'diskEncryptionKey', 'type': 'KeyVaultAndSecretReference'},
805        'key_encryption_key': {'key': 'keyEncryptionKey', 'type': 'KeyVaultAndKeyReference'},
806    }
807
808    def __init__(
809        self,
810        *,
811        disk_encryption_key: Optional["KeyVaultAndSecretReference"] = None,
812        key_encryption_key: Optional["KeyVaultAndKeyReference"] = None,
813        **kwargs
814    ):
815        super(EncryptionSettingsElement, self).__init__(**kwargs)
816        self.disk_encryption_key = disk_encryption_key
817        self.key_encryption_key = key_encryption_key
818
819
820class GrantAccessData(msrest.serialization.Model):
821    """Data used for requesting a SAS.
822
823    All required parameters must be populated in order to send to Azure.
824
825    :param access: Required.  Possible values include: "None", "Read", "Write".
826    :type access: str or ~azure.mgmt.compute.v2019_11_01.models.AccessLevel
827    :param duration_in_seconds: Required. Time duration in seconds until the SAS access expires.
828    :type duration_in_seconds: int
829    """
830
831    _validation = {
832        'access': {'required': True},
833        'duration_in_seconds': {'required': True},
834    }
835
836    _attribute_map = {
837        'access': {'key': 'access', 'type': 'str'},
838        'duration_in_seconds': {'key': 'durationInSeconds', 'type': 'int'},
839    }
840
841    def __init__(
842        self,
843        *,
844        access: Union[str, "AccessLevel"],
845        duration_in_seconds: int,
846        **kwargs
847    ):
848        super(GrantAccessData, self).__init__(**kwargs)
849        self.access = access
850        self.duration_in_seconds = duration_in_seconds
851
852
853class ImageDiskReference(msrest.serialization.Model):
854    """The source image used for creating the disk.
855
856    All required parameters must be populated in order to send to Azure.
857
858    :param id: Required. A relative uri containing either a Platform Image Repository or user image
859     reference.
860    :type id: str
861    :param lun: If the disk is created from an image's data disk, this is an index that indicates
862     which of the data disks in the image to use. For OS disks, this field is null.
863    :type lun: int
864    """
865
866    _validation = {
867        'id': {'required': True},
868    }
869
870    _attribute_map = {
871        'id': {'key': 'id', 'type': 'str'},
872        'lun': {'key': 'lun', 'type': 'int'},
873    }
874
875    def __init__(
876        self,
877        *,
878        id: str,
879        lun: Optional[int] = None,
880        **kwargs
881    ):
882        super(ImageDiskReference, self).__init__(**kwargs)
883        self.id = id
884        self.lun = lun
885
886
887class InnerError(msrest.serialization.Model):
888    """Inner error details.
889
890    :param exceptiontype: The exception type.
891    :type exceptiontype: str
892    :param errordetail: The internal error message or exception dump.
893    :type errordetail: str
894    """
895
896    _attribute_map = {
897        'exceptiontype': {'key': 'exceptiontype', 'type': 'str'},
898        'errordetail': {'key': 'errordetail', 'type': 'str'},
899    }
900
901    def __init__(
902        self,
903        *,
904        exceptiontype: Optional[str] = None,
905        errordetail: Optional[str] = None,
906        **kwargs
907    ):
908        super(InnerError, self).__init__(**kwargs)
909        self.exceptiontype = exceptiontype
910        self.errordetail = errordetail
911
912
913class KeyVaultAndKeyReference(msrest.serialization.Model):
914    """Key Vault Key Url and vault id of KeK, KeK is optional and when provided is used to unwrap the encryptionKey.
915
916    All required parameters must be populated in order to send to Azure.
917
918    :param source_vault: Required. Resource id of the KeyVault containing the key or secret.
919    :type source_vault: ~azure.mgmt.compute.v2019_11_01.models.SourceVault
920    :param key_url: Required. Url pointing to a key or secret in KeyVault.
921    :type key_url: str
922    """
923
924    _validation = {
925        'source_vault': {'required': True},
926        'key_url': {'required': True},
927    }
928
929    _attribute_map = {
930        'source_vault': {'key': 'sourceVault', 'type': 'SourceVault'},
931        'key_url': {'key': 'keyUrl', 'type': 'str'},
932    }
933
934    def __init__(
935        self,
936        *,
937        source_vault: "SourceVault",
938        key_url: str,
939        **kwargs
940    ):
941        super(KeyVaultAndKeyReference, self).__init__(**kwargs)
942        self.source_vault = source_vault
943        self.key_url = key_url
944
945
946class KeyVaultAndSecretReference(msrest.serialization.Model):
947    """Key Vault Secret Url and vault id of the encryption key.
948
949    All required parameters must be populated in order to send to Azure.
950
951    :param source_vault: Required. Resource id of the KeyVault containing the key or secret.
952    :type source_vault: ~azure.mgmt.compute.v2019_11_01.models.SourceVault
953    :param secret_url: Required. Url pointing to a key or secret in KeyVault.
954    :type secret_url: str
955    """
956
957    _validation = {
958        'source_vault': {'required': True},
959        'secret_url': {'required': True},
960    }
961
962    _attribute_map = {
963        'source_vault': {'key': 'sourceVault', 'type': 'SourceVault'},
964        'secret_url': {'key': 'secretUrl', 'type': 'str'},
965    }
966
967    def __init__(
968        self,
969        *,
970        source_vault: "SourceVault",
971        secret_url: str,
972        **kwargs
973    ):
974        super(KeyVaultAndSecretReference, self).__init__(**kwargs)
975        self.source_vault = source_vault
976        self.secret_url = secret_url
977
978
979class ShareInfoElement(msrest.serialization.Model):
980    """ShareInfoElement.
981
982    Variables are only populated by the server, and will be ignored when sending a request.
983
984    :ivar vm_uri: A relative URI containing the ID of the VM that has the disk attached.
985    :vartype vm_uri: str
986    """
987
988    _validation = {
989        'vm_uri': {'readonly': True},
990    }
991
992    _attribute_map = {
993        'vm_uri': {'key': 'vmUri', 'type': 'str'},
994    }
995
996    def __init__(
997        self,
998        **kwargs
999    ):
1000        super(ShareInfoElement, self).__init__(**kwargs)
1001        self.vm_uri = None
1002
1003
1004class Snapshot(Resource):
1005    """Snapshot resource.
1006
1007    Variables are only populated by the server, and will be ignored when sending a request.
1008
1009    All required parameters must be populated in order to send to Azure.
1010
1011    :ivar id: Resource Id.
1012    :vartype id: str
1013    :ivar name: Resource name.
1014    :vartype name: str
1015    :ivar type: Resource type.
1016    :vartype type: str
1017    :param location: Required. Resource location.
1018    :type location: str
1019    :param tags: A set of tags. Resource tags.
1020    :type tags: dict[str, str]
1021    :ivar managed_by: Unused. Always Null.
1022    :vartype managed_by: str
1023    :param sku: The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS.
1024    :type sku: ~azure.mgmt.compute.v2019_11_01.models.SnapshotSku
1025    :ivar time_created: The time when the disk was created.
1026    :vartype time_created: ~datetime.datetime
1027    :param os_type: The Operating System type. Possible values include: "Windows", "Linux".
1028    :type os_type: str or ~azure.mgmt.compute.v2019_11_01.models.OperatingSystemTypes
1029    :param hyper_v_generation: The hypervisor generation of the Virtual Machine. Applicable to OS
1030     disks only. Possible values include: "V1", "V2".
1031    :type hyper_v_generation: str or ~azure.mgmt.compute.v2019_11_01.models.HyperVGeneration
1032    :param creation_data: Disk source information. CreationData information cannot be changed after
1033     the disk has been created.
1034    :type creation_data: ~azure.mgmt.compute.v2019_11_01.models.CreationData
1035    :param disk_size_gb: If creationData.createOption is Empty, this field is mandatory and it
1036     indicates the size of the disk to create. If this field is present for updates or creation with
1037     other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a
1038     running VM, and can only increase the disk's size.
1039    :type disk_size_gb: int
1040    :ivar disk_size_bytes: The size of the disk in bytes. This field is read only.
1041    :vartype disk_size_bytes: long
1042    :ivar unique_id: Unique Guid identifying the resource.
1043    :vartype unique_id: str
1044    :param encryption_settings_collection: Encryption settings collection used be Azure Disk
1045     Encryption, can contain multiple encryption settings per disk or snapshot.
1046    :type encryption_settings_collection:
1047     ~azure.mgmt.compute.v2019_11_01.models.EncryptionSettingsCollection
1048    :ivar provisioning_state: The disk provisioning state.
1049    :vartype provisioning_state: str
1050    :param incremental: Whether a snapshot is incremental. Incremental snapshots on the same disk
1051     occupy less space than full snapshots and can be diffed.
1052    :type incremental: bool
1053    :param encryption: Encryption property can be used to encrypt data at rest with customer
1054     managed keys or platform managed keys.
1055    :type encryption: ~azure.mgmt.compute.v2019_11_01.models.Encryption
1056    """
1057
1058    _validation = {
1059        'id': {'readonly': True},
1060        'name': {'readonly': True},
1061        'type': {'readonly': True},
1062        'location': {'required': True},
1063        'managed_by': {'readonly': True},
1064        'time_created': {'readonly': True},
1065        'disk_size_bytes': {'readonly': True},
1066        'unique_id': {'readonly': True},
1067        'provisioning_state': {'readonly': True},
1068    }
1069
1070    _attribute_map = {
1071        'id': {'key': 'id', 'type': 'str'},
1072        'name': {'key': 'name', 'type': 'str'},
1073        'type': {'key': 'type', 'type': 'str'},
1074        'location': {'key': 'location', 'type': 'str'},
1075        'tags': {'key': 'tags', 'type': '{str}'},
1076        'managed_by': {'key': 'managedBy', 'type': 'str'},
1077        'sku': {'key': 'sku', 'type': 'SnapshotSku'},
1078        'time_created': {'key': 'properties.timeCreated', 'type': 'iso-8601'},
1079        'os_type': {'key': 'properties.osType', 'type': 'str'},
1080        'hyper_v_generation': {'key': 'properties.hyperVGeneration', 'type': 'str'},
1081        'creation_data': {'key': 'properties.creationData', 'type': 'CreationData'},
1082        'disk_size_gb': {'key': 'properties.diskSizeGB', 'type': 'int'},
1083        'disk_size_bytes': {'key': 'properties.diskSizeBytes', 'type': 'long'},
1084        'unique_id': {'key': 'properties.uniqueId', 'type': 'str'},
1085        'encryption_settings_collection': {'key': 'properties.encryptionSettingsCollection', 'type': 'EncryptionSettingsCollection'},
1086        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1087        'incremental': {'key': 'properties.incremental', 'type': 'bool'},
1088        'encryption': {'key': 'properties.encryption', 'type': 'Encryption'},
1089    }
1090
1091    def __init__(
1092        self,
1093        *,
1094        location: str,
1095        tags: Optional[Dict[str, str]] = None,
1096        sku: Optional["SnapshotSku"] = None,
1097        os_type: Optional[Union[str, "OperatingSystemTypes"]] = None,
1098        hyper_v_generation: Optional[Union[str, "HyperVGeneration"]] = None,
1099        creation_data: Optional["CreationData"] = None,
1100        disk_size_gb: Optional[int] = None,
1101        encryption_settings_collection: Optional["EncryptionSettingsCollection"] = None,
1102        incremental: Optional[bool] = None,
1103        encryption: Optional["Encryption"] = None,
1104        **kwargs
1105    ):
1106        super(Snapshot, self).__init__(location=location, tags=tags, **kwargs)
1107        self.managed_by = None
1108        self.sku = sku
1109        self.time_created = None
1110        self.os_type = os_type
1111        self.hyper_v_generation = hyper_v_generation
1112        self.creation_data = creation_data
1113        self.disk_size_gb = disk_size_gb
1114        self.disk_size_bytes = None
1115        self.unique_id = None
1116        self.encryption_settings_collection = encryption_settings_collection
1117        self.provisioning_state = None
1118        self.incremental = incremental
1119        self.encryption = encryption
1120
1121
1122class SnapshotList(msrest.serialization.Model):
1123    """The List Snapshots operation response.
1124
1125    All required parameters must be populated in order to send to Azure.
1126
1127    :param value: Required. A list of snapshots.
1128    :type value: list[~azure.mgmt.compute.v2019_11_01.models.Snapshot]
1129    :param next_link: The uri to fetch the next page of snapshots. Call ListNext() with this to
1130     fetch the next page of snapshots.
1131    :type next_link: str
1132    """
1133
1134    _validation = {
1135        'value': {'required': True},
1136    }
1137
1138    _attribute_map = {
1139        'value': {'key': 'value', 'type': '[Snapshot]'},
1140        'next_link': {'key': 'nextLink', 'type': 'str'},
1141    }
1142
1143    def __init__(
1144        self,
1145        *,
1146        value: List["Snapshot"],
1147        next_link: Optional[str] = None,
1148        **kwargs
1149    ):
1150        super(SnapshotList, self).__init__(**kwargs)
1151        self.value = value
1152        self.next_link = next_link
1153
1154
1155class SnapshotSku(msrest.serialization.Model):
1156    """The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS.
1157
1158    Variables are only populated by the server, and will be ignored when sending a request.
1159
1160    :param name: The sku name. Possible values include: "Standard_LRS", "Premium_LRS",
1161     "Standard_ZRS".
1162    :type name: str or ~azure.mgmt.compute.v2019_11_01.models.SnapshotStorageAccountTypes
1163    :ivar tier: The sku tier.
1164    :vartype tier: str
1165    """
1166
1167    _validation = {
1168        'tier': {'readonly': True},
1169    }
1170
1171    _attribute_map = {
1172        'name': {'key': 'name', 'type': 'str'},
1173        'tier': {'key': 'tier', 'type': 'str'},
1174    }
1175
1176    def __init__(
1177        self,
1178        *,
1179        name: Optional[Union[str, "SnapshotStorageAccountTypes"]] = None,
1180        **kwargs
1181    ):
1182        super(SnapshotSku, self).__init__(**kwargs)
1183        self.name = name
1184        self.tier = None
1185
1186
1187class SnapshotUpdate(msrest.serialization.Model):
1188    """Snapshot update resource.
1189
1190    :param tags: A set of tags. Resource tags.
1191    :type tags: dict[str, str]
1192    :param sku: The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS.
1193    :type sku: ~azure.mgmt.compute.v2019_11_01.models.SnapshotSku
1194    :param os_type: the Operating System type. Possible values include: "Windows", "Linux".
1195    :type os_type: str or ~azure.mgmt.compute.v2019_11_01.models.OperatingSystemTypes
1196    :param disk_size_gb: If creationData.createOption is Empty, this field is mandatory and it
1197     indicates the size of the disk to create. If this field is present for updates or creation with
1198     other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a
1199     running VM, and can only increase the disk's size.
1200    :type disk_size_gb: int
1201    :param encryption_settings_collection: Encryption settings collection used be Azure Disk
1202     Encryption, can contain multiple encryption settings per disk or snapshot.
1203    :type encryption_settings_collection:
1204     ~azure.mgmt.compute.v2019_11_01.models.EncryptionSettingsCollection
1205    :param encryption: Encryption property can be used to encrypt data at rest with customer
1206     managed keys or platform managed keys.
1207    :type encryption: ~azure.mgmt.compute.v2019_11_01.models.Encryption
1208    """
1209
1210    _attribute_map = {
1211        'tags': {'key': 'tags', 'type': '{str}'},
1212        'sku': {'key': 'sku', 'type': 'SnapshotSku'},
1213        'os_type': {'key': 'properties.osType', 'type': 'str'},
1214        'disk_size_gb': {'key': 'properties.diskSizeGB', 'type': 'int'},
1215        'encryption_settings_collection': {'key': 'properties.encryptionSettingsCollection', 'type': 'EncryptionSettingsCollection'},
1216        'encryption': {'key': 'properties.encryption', 'type': 'Encryption'},
1217    }
1218
1219    def __init__(
1220        self,
1221        *,
1222        tags: Optional[Dict[str, str]] = None,
1223        sku: Optional["SnapshotSku"] = None,
1224        os_type: Optional[Union[str, "OperatingSystemTypes"]] = None,
1225        disk_size_gb: Optional[int] = None,
1226        encryption_settings_collection: Optional["EncryptionSettingsCollection"] = None,
1227        encryption: Optional["Encryption"] = None,
1228        **kwargs
1229    ):
1230        super(SnapshotUpdate, self).__init__(**kwargs)
1231        self.tags = tags
1232        self.sku = sku
1233        self.os_type = os_type
1234        self.disk_size_gb = disk_size_gb
1235        self.encryption_settings_collection = encryption_settings_collection
1236        self.encryption = encryption
1237
1238
1239class SourceVault(msrest.serialization.Model):
1240    """The vault id is an Azure Resource Manager Resource id in the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}.
1241
1242    :param id: Resource Id.
1243    :type id: str
1244    """
1245
1246    _attribute_map = {
1247        'id': {'key': 'id', 'type': 'str'},
1248    }
1249
1250    def __init__(
1251        self,
1252        *,
1253        id: Optional[str] = None,
1254        **kwargs
1255    ):
1256        super(SourceVault, self).__init__(**kwargs)
1257        self.id = id
1258