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 azure.core.exceptions import HttpResponseError
10import msrest.serialization
11
12
13class ActivationProperties(msrest.serialization.Model):
14    """The activation properties of the connected registry.
15
16    Variables are only populated by the server, and will be ignored when sending a request.
17
18    :ivar status: The activation status of the connected registry. Possible values include:
19     "Active", "Inactive".
20    :vartype status: str or
21     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ActivationStatus
22    """
23
24    _validation = {
25        'status': {'readonly': True},
26    }
27
28    _attribute_map = {
29        'status': {'key': 'status', 'type': 'str'},
30    }
31
32    def __init__(
33        self,
34        **kwargs
35    ):
36        super(ActivationProperties, self).__init__(**kwargs)
37        self.status = None
38
39
40class ActiveDirectoryObject(msrest.serialization.Model):
41    """The Active Directory Object that will be used for authenticating the token of a container registry.
42
43    :param object_id: The user/group/application object ID for Active Directory Object that will be
44     used for authenticating the token of a container registry.
45    :type object_id: str
46    :param tenant_id: The tenant ID of user/group/application object Active Directory Object that
47     will be used for authenticating the token of a container registry.
48    :type tenant_id: str
49    """
50
51    _attribute_map = {
52        'object_id': {'key': 'objectId', 'type': 'str'},
53        'tenant_id': {'key': 'tenantId', 'type': 'str'},
54    }
55
56    def __init__(
57        self,
58        **kwargs
59    ):
60        super(ActiveDirectoryObject, self).__init__(**kwargs)
61        self.object_id = kwargs.get('object_id', None)
62        self.tenant_id = kwargs.get('tenant_id', None)
63
64
65class Actor(msrest.serialization.Model):
66    """The agent that initiated the event. For most situations, this could be from the authorization context of the request.
67
68    :param name: The subject or username associated with the request context that generated the
69     event.
70    :type name: str
71    """
72
73    _attribute_map = {
74        'name': {'key': 'name', 'type': 'str'},
75    }
76
77    def __init__(
78        self,
79        **kwargs
80    ):
81        super(Actor, self).__init__(**kwargs)
82        self.name = kwargs.get('name', None)
83
84
85class CallbackConfig(msrest.serialization.Model):
86    """The configuration of service URI and custom headers for the webhook.
87
88    All required parameters must be populated in order to send to Azure.
89
90    :param service_uri: Required. The service URI for the webhook to post notifications.
91    :type service_uri: str
92    :param custom_headers: Custom headers that will be added to the webhook notifications.
93    :type custom_headers: dict[str, str]
94    """
95
96    _validation = {
97        'service_uri': {'required': True},
98    }
99
100    _attribute_map = {
101        'service_uri': {'key': 'serviceUri', 'type': 'str'},
102        'custom_headers': {'key': 'customHeaders', 'type': '{str}'},
103    }
104
105    def __init__(
106        self,
107        **kwargs
108    ):
109        super(CallbackConfig, self).__init__(**kwargs)
110        self.service_uri = kwargs['service_uri']
111        self.custom_headers = kwargs.get('custom_headers', None)
112
113
114class ProxyResource(msrest.serialization.Model):
115    """The resource model definition for a ARM proxy resource. It will have everything other than required location and tags.
116
117    Variables are only populated by the server, and will be ignored when sending a request.
118
119    :ivar id: The resource ID.
120    :vartype id: str
121    :ivar name: The name of the resource.
122    :vartype name: str
123    :ivar type: The type of the resource.
124    :vartype type: str
125    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
126    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
127    """
128
129    _validation = {
130        'id': {'readonly': True},
131        'name': {'readonly': True},
132        'type': {'readonly': True},
133        'system_data': {'readonly': True},
134    }
135
136    _attribute_map = {
137        'id': {'key': 'id', 'type': 'str'},
138        'name': {'key': 'name', 'type': 'str'},
139        'type': {'key': 'type', 'type': 'str'},
140        'system_data': {'key': 'systemData', 'type': 'SystemData'},
141    }
142
143    def __init__(
144        self,
145        **kwargs
146    ):
147        super(ProxyResource, self).__init__(**kwargs)
148        self.id = None
149        self.name = None
150        self.type = None
151        self.system_data = None
152
153
154class ConnectedRegistry(ProxyResource):
155    """An object that represents a connected registry for a container registry.
156
157    Variables are only populated by the server, and will be ignored when sending a request.
158
159    :ivar id: The resource ID.
160    :vartype id: str
161    :ivar name: The name of the resource.
162    :vartype name: str
163    :ivar type: The type of the resource.
164    :vartype type: str
165    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
166    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
167    :ivar provisioning_state: Provisioning state of the resource. Possible values include:
168     "Creating", "Updating", "Deleting", "Succeeded", "Failed", "Canceled".
169    :vartype provisioning_state: str or
170     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
171    :param mode: The mode of the connected registry resource that indicates the permissions of the
172     registry. Possible values include: "Registry", "Mirror".
173    :type mode: str or
174     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ConnectedRegistryMode
175    :ivar version: The current version of ACR runtime on the connected registry.
176    :vartype version: str
177    :ivar connection_state: The current connection state of the connected registry. Possible values
178     include: "Online", "Offline", "Syncing", "Unhealthy".
179    :vartype connection_state: str or
180     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ConnectionState
181    :ivar last_activity_time: The last activity time of the connected registry.
182    :vartype last_activity_time: ~datetime.datetime
183    :ivar activation: The activation properties of the connected registry.
184    :vartype activation:
185     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ActivationProperties
186    :param parent: The parent of the connected registry.
187    :type parent: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ParentProperties
188    :param client_token_ids: The list of the ACR token resource IDs used to authenticate clients to
189     the connected registry.
190    :type client_token_ids: list[str]
191    :param login_server: The login server properties of the connected registry.
192    :type login_server:
193     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.LoginServerProperties
194    :param logging: The logging properties of the connected registry.
195    :type logging: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.LoggingProperties
196    :ivar status_details: The list of current statuses of the connected registry.
197    :vartype status_details:
198     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.StatusDetailProperties]
199    """
200
201    _validation = {
202        'id': {'readonly': True},
203        'name': {'readonly': True},
204        'type': {'readonly': True},
205        'system_data': {'readonly': True},
206        'provisioning_state': {'readonly': True},
207        'version': {'readonly': True},
208        'connection_state': {'readonly': True},
209        'last_activity_time': {'readonly': True},
210        'activation': {'readonly': True},
211        'status_details': {'readonly': True},
212    }
213
214    _attribute_map = {
215        'id': {'key': 'id', 'type': 'str'},
216        'name': {'key': 'name', 'type': 'str'},
217        'type': {'key': 'type', 'type': 'str'},
218        'system_data': {'key': 'systemData', 'type': 'SystemData'},
219        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
220        'mode': {'key': 'properties.mode', 'type': 'str'},
221        'version': {'key': 'properties.version', 'type': 'str'},
222        'connection_state': {'key': 'properties.connectionState', 'type': 'str'},
223        'last_activity_time': {'key': 'properties.lastActivityTime', 'type': 'iso-8601'},
224        'activation': {'key': 'properties.activation', 'type': 'ActivationProperties'},
225        'parent': {'key': 'properties.parent', 'type': 'ParentProperties'},
226        'client_token_ids': {'key': 'properties.clientTokenIds', 'type': '[str]'},
227        'login_server': {'key': 'properties.loginServer', 'type': 'LoginServerProperties'},
228        'logging': {'key': 'properties.logging', 'type': 'LoggingProperties'},
229        'status_details': {'key': 'properties.statusDetails', 'type': '[StatusDetailProperties]'},
230    }
231
232    def __init__(
233        self,
234        **kwargs
235    ):
236        super(ConnectedRegistry, self).__init__(**kwargs)
237        self.provisioning_state = None
238        self.mode = kwargs.get('mode', None)
239        self.version = None
240        self.connection_state = None
241        self.last_activity_time = None
242        self.activation = None
243        self.parent = kwargs.get('parent', None)
244        self.client_token_ids = kwargs.get('client_token_ids', None)
245        self.login_server = kwargs.get('login_server', None)
246        self.logging = kwargs.get('logging', None)
247        self.status_details = None
248
249
250class ConnectedRegistryListResult(msrest.serialization.Model):
251    """The result of a request to list connected registries for a container registry.
252
253    :param value: The list of connected registries. Since this list may be incomplete, the nextLink
254     field should be used to request the next list of connected registries.
255    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.ConnectedRegistry]
256    :param next_link: The URI that can be used to request the next list of connected registries.
257    :type next_link: str
258    """
259
260    _attribute_map = {
261        'value': {'key': 'value', 'type': '[ConnectedRegistry]'},
262        'next_link': {'key': 'nextLink', 'type': 'str'},
263    }
264
265    def __init__(
266        self,
267        **kwargs
268    ):
269        super(ConnectedRegistryListResult, self).__init__(**kwargs)
270        self.value = kwargs.get('value', None)
271        self.next_link = kwargs.get('next_link', None)
272
273
274class ConnectedRegistryUpdateParameters(msrest.serialization.Model):
275    """The parameters for updating a connected registry.
276
277    :param sync_properties: The sync properties of the connected registry with its parent.
278    :type sync_properties:
279     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SyncUpdateProperties
280    :param logging: The logging properties of the connected registry.
281    :type logging: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.LoggingProperties
282    :param client_token_ids: The list of the ACR token resource IDs used to authenticate clients to
283     the connected registry.
284    :type client_token_ids: list[str]
285    """
286
287    _attribute_map = {
288        'sync_properties': {'key': 'properties.syncProperties', 'type': 'SyncUpdateProperties'},
289        'logging': {'key': 'properties.logging', 'type': 'LoggingProperties'},
290        'client_token_ids': {'key': 'properties.clientTokenIds', 'type': '[str]'},
291    }
292
293    def __init__(
294        self,
295        **kwargs
296    ):
297        super(ConnectedRegistryUpdateParameters, self).__init__(**kwargs)
298        self.sync_properties = kwargs.get('sync_properties', None)
299        self.logging = kwargs.get('logging', None)
300        self.client_token_ids = kwargs.get('client_token_ids', None)
301
302
303class EncryptionProperty(msrest.serialization.Model):
304    """EncryptionProperty.
305
306    :param status: Indicates whether or not the encryption is enabled for container registry.
307     Possible values include: "enabled", "disabled".
308    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.EncryptionStatus
309    :param key_vault_properties: Key vault properties.
310    :type key_vault_properties:
311     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.KeyVaultProperties
312    """
313
314    _attribute_map = {
315        'status': {'key': 'status', 'type': 'str'},
316        'key_vault_properties': {'key': 'keyVaultProperties', 'type': 'KeyVaultProperties'},
317    }
318
319    def __init__(
320        self,
321        **kwargs
322    ):
323        super(EncryptionProperty, self).__init__(**kwargs)
324        self.status = kwargs.get('status', None)
325        self.key_vault_properties = kwargs.get('key_vault_properties', None)
326
327
328class ErrorResponse(msrest.serialization.Model):
329    """An error response from the Azure Container Registry service.
330
331    :param error: Azure container registry build API error body.
332    :type error: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ErrorResponseBody
333    """
334
335    _attribute_map = {
336        'error': {'key': 'error', 'type': 'ErrorResponseBody'},
337    }
338
339    def __init__(
340        self,
341        **kwargs
342    ):
343        super(ErrorResponse, self).__init__(**kwargs)
344        self.error = kwargs.get('error', None)
345
346
347class ErrorResponseBody(msrest.serialization.Model):
348    """An error response from the Azure Container Registry service.
349
350    All required parameters must be populated in order to send to Azure.
351
352    :param code: Required. error code.
353    :type code: str
354    :param message: Required. error message.
355    :type message: str
356    :param target: target of the particular error.
357    :type target: str
358    :param details: an array of additional nested error response info objects, as described by this
359     contract.
360    :type details: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.InnerErrorDescription
361    """
362
363    _validation = {
364        'code': {'required': True},
365        'message': {'required': True},
366    }
367
368    _attribute_map = {
369        'code': {'key': 'code', 'type': 'str'},
370        'message': {'key': 'message', 'type': 'str'},
371        'target': {'key': 'target', 'type': 'str'},
372        'details': {'key': 'details', 'type': 'InnerErrorDescription'},
373    }
374
375    def __init__(
376        self,
377        **kwargs
378    ):
379        super(ErrorResponseBody, self).__init__(**kwargs)
380        self.code = kwargs['code']
381        self.message = kwargs['message']
382        self.target = kwargs.get('target', None)
383        self.details = kwargs.get('details', None)
384
385
386class EventInfo(msrest.serialization.Model):
387    """The basic information of an event.
388
389    :param id: The event ID.
390    :type id: str
391    """
392
393    _attribute_map = {
394        'id': {'key': 'id', 'type': 'str'},
395    }
396
397    def __init__(
398        self,
399        **kwargs
400    ):
401        super(EventInfo, self).__init__(**kwargs)
402        self.id = kwargs.get('id', None)
403
404
405class Event(EventInfo):
406    """The event for a webhook.
407
408    :param id: The event ID.
409    :type id: str
410    :param event_request_message: The event request message sent to the service URI.
411    :type event_request_message:
412     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.EventRequestMessage
413    :param event_response_message: The event response message received from the service URI.
414    :type event_response_message:
415     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.EventResponseMessage
416    """
417
418    _attribute_map = {
419        'id': {'key': 'id', 'type': 'str'},
420        'event_request_message': {'key': 'eventRequestMessage', 'type': 'EventRequestMessage'},
421        'event_response_message': {'key': 'eventResponseMessage', 'type': 'EventResponseMessage'},
422    }
423
424    def __init__(
425        self,
426        **kwargs
427    ):
428        super(Event, self).__init__(**kwargs)
429        self.event_request_message = kwargs.get('event_request_message', None)
430        self.event_response_message = kwargs.get('event_response_message', None)
431
432
433class EventContent(msrest.serialization.Model):
434    """The content of the event request message.
435
436    :param id: The event ID.
437    :type id: str
438    :param timestamp: The time at which the event occurred.
439    :type timestamp: ~datetime.datetime
440    :param action: The action that encompasses the provided event.
441    :type action: str
442    :param target: The target of the event.
443    :type target: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Target
444    :param request: The request that generated the event.
445    :type request: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Request
446    :param actor: The agent that initiated the event. For most situations, this could be from the
447     authorization context of the request.
448    :type actor: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Actor
449    :param source: The registry node that generated the event. Put differently, while the actor
450     initiates the event, the source generates it.
451    :type source: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Source
452    """
453
454    _attribute_map = {
455        'id': {'key': 'id', 'type': 'str'},
456        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
457        'action': {'key': 'action', 'type': 'str'},
458        'target': {'key': 'target', 'type': 'Target'},
459        'request': {'key': 'request', 'type': 'Request'},
460        'actor': {'key': 'actor', 'type': 'Actor'},
461        'source': {'key': 'source', 'type': 'Source'},
462    }
463
464    def __init__(
465        self,
466        **kwargs
467    ):
468        super(EventContent, self).__init__(**kwargs)
469        self.id = kwargs.get('id', None)
470        self.timestamp = kwargs.get('timestamp', None)
471        self.action = kwargs.get('action', None)
472        self.target = kwargs.get('target', None)
473        self.request = kwargs.get('request', None)
474        self.actor = kwargs.get('actor', None)
475        self.source = kwargs.get('source', None)
476
477
478class EventListResult(msrest.serialization.Model):
479    """The result of a request to list events for a webhook.
480
481    :param value: The list of events. Since this list may be incomplete, the nextLink field should
482     be used to request the next list of events.
483    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.Event]
484    :param next_link: The URI that can be used to request the next list of events.
485    :type next_link: str
486    """
487
488    _attribute_map = {
489        'value': {'key': 'value', 'type': '[Event]'},
490        'next_link': {'key': 'nextLink', 'type': 'str'},
491    }
492
493    def __init__(
494        self,
495        **kwargs
496    ):
497        super(EventListResult, self).__init__(**kwargs)
498        self.value = kwargs.get('value', None)
499        self.next_link = kwargs.get('next_link', None)
500
501
502class EventRequestMessage(msrest.serialization.Model):
503    """The event request message sent to the service URI.
504
505    :param content: The content of the event request message.
506    :type content: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.EventContent
507    :param headers: The headers of the event request message.
508    :type headers: dict[str, str]
509    :param method: The HTTP method used to send the event request message.
510    :type method: str
511    :param request_uri: The URI used to send the event request message.
512    :type request_uri: str
513    :param version: The HTTP message version.
514    :type version: str
515    """
516
517    _attribute_map = {
518        'content': {'key': 'content', 'type': 'EventContent'},
519        'headers': {'key': 'headers', 'type': '{str}'},
520        'method': {'key': 'method', 'type': 'str'},
521        'request_uri': {'key': 'requestUri', 'type': 'str'},
522        'version': {'key': 'version', 'type': 'str'},
523    }
524
525    def __init__(
526        self,
527        **kwargs
528    ):
529        super(EventRequestMessage, self).__init__(**kwargs)
530        self.content = kwargs.get('content', None)
531        self.headers = kwargs.get('headers', None)
532        self.method = kwargs.get('method', None)
533        self.request_uri = kwargs.get('request_uri', None)
534        self.version = kwargs.get('version', None)
535
536
537class EventResponseMessage(msrest.serialization.Model):
538    """The event response message received from the service URI.
539
540    :param content: The content of the event response message.
541    :type content: str
542    :param headers: The headers of the event response message.
543    :type headers: dict[str, str]
544    :param reason_phrase: The reason phrase of the event response message.
545    :type reason_phrase: str
546    :param status_code: The status code of the event response message.
547    :type status_code: str
548    :param version: The HTTP message version.
549    :type version: str
550    """
551
552    _attribute_map = {
553        'content': {'key': 'content', 'type': 'str'},
554        'headers': {'key': 'headers', 'type': '{str}'},
555        'reason_phrase': {'key': 'reasonPhrase', 'type': 'str'},
556        'status_code': {'key': 'statusCode', 'type': 'str'},
557        'version': {'key': 'version', 'type': 'str'},
558    }
559
560    def __init__(
561        self,
562        **kwargs
563    ):
564        super(EventResponseMessage, self).__init__(**kwargs)
565        self.content = kwargs.get('content', None)
566        self.headers = kwargs.get('headers', None)
567        self.reason_phrase = kwargs.get('reason_phrase', None)
568        self.status_code = kwargs.get('status_code', None)
569        self.version = kwargs.get('version', None)
570
571
572class ExportPipeline(ProxyResource):
573    """An object that represents an export pipeline for a container registry.
574
575    Variables are only populated by the server, and will be ignored when sending a request.
576
577    :ivar id: The resource ID.
578    :vartype id: str
579    :ivar name: The name of the resource.
580    :vartype name: str
581    :ivar type: The type of the resource.
582    :vartype type: str
583    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
584    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
585    :param location: The location of the export pipeline.
586    :type location: str
587    :param identity: The identity of the export pipeline.
588    :type identity: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.IdentityProperties
589    :param target: The target properties of the export pipeline.
590    :type target:
591     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ExportPipelineTargetProperties
592    :param options: The list of all options configured for the pipeline.
593    :type options: list[str or
594     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineOptions]
595    :ivar provisioning_state: The provisioning state of the pipeline at the time the operation was
596     called. Possible values include: "Creating", "Updating", "Deleting", "Succeeded", "Failed",
597     "Canceled".
598    :vartype provisioning_state: str or
599     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
600    """
601
602    _validation = {
603        'id': {'readonly': True},
604        'name': {'readonly': True},
605        'type': {'readonly': True},
606        'system_data': {'readonly': True},
607        'provisioning_state': {'readonly': True},
608    }
609
610    _attribute_map = {
611        'id': {'key': 'id', 'type': 'str'},
612        'name': {'key': 'name', 'type': 'str'},
613        'type': {'key': 'type', 'type': 'str'},
614        'system_data': {'key': 'systemData', 'type': 'SystemData'},
615        'location': {'key': 'location', 'type': 'str'},
616        'identity': {'key': 'identity', 'type': 'IdentityProperties'},
617        'target': {'key': 'properties.target', 'type': 'ExportPipelineTargetProperties'},
618        'options': {'key': 'properties.options', 'type': '[str]'},
619        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
620    }
621
622    def __init__(
623        self,
624        **kwargs
625    ):
626        super(ExportPipeline, self).__init__(**kwargs)
627        self.location = kwargs.get('location', None)
628        self.identity = kwargs.get('identity', None)
629        self.target = kwargs.get('target', None)
630        self.options = kwargs.get('options', None)
631        self.provisioning_state = None
632
633
634class ExportPipelineListResult(msrest.serialization.Model):
635    """The result of a request to list export pipelines for a container registry.
636
637    :param value: The list of export pipelines. Since this list may be incomplete, the nextLink
638     field should be used to request the next list of export pipelines.
639    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.ExportPipeline]
640    :param next_link: The URI that can be used to request the next list of pipeline runs.
641    :type next_link: str
642    """
643
644    _attribute_map = {
645        'value': {'key': 'value', 'type': '[ExportPipeline]'},
646        'next_link': {'key': 'nextLink', 'type': 'str'},
647    }
648
649    def __init__(
650        self,
651        **kwargs
652    ):
653        super(ExportPipelineListResult, self).__init__(**kwargs)
654        self.value = kwargs.get('value', None)
655        self.next_link = kwargs.get('next_link', None)
656
657
658class ExportPipelineTargetProperties(msrest.serialization.Model):
659    """The properties of the export pipeline target.
660
661    All required parameters must be populated in order to send to Azure.
662
663    :param type: The type of target for the export pipeline.
664    :type type: str
665    :param uri: The target uri of the export pipeline.
666     When 'AzureStorageBlob': "https://accountName.blob.core.windows.net/containerName/blobName"
667     When 'AzureStorageBlobContainer':  "https://accountName.blob.core.windows.net/containerName".
668    :type uri: str
669    :param key_vault_uri: Required. They key vault secret uri to obtain the target storage SAS
670     token.
671    :type key_vault_uri: str
672    """
673
674    _validation = {
675        'key_vault_uri': {'required': True},
676    }
677
678    _attribute_map = {
679        'type': {'key': 'type', 'type': 'str'},
680        'uri': {'key': 'uri', 'type': 'str'},
681        'key_vault_uri': {'key': 'keyVaultUri', 'type': 'str'},
682    }
683
684    def __init__(
685        self,
686        **kwargs
687    ):
688        super(ExportPipelineTargetProperties, self).__init__(**kwargs)
689        self.type = kwargs.get('type', None)
690        self.uri = kwargs.get('uri', None)
691        self.key_vault_uri = kwargs['key_vault_uri']
692
693
694class GenerateCredentialsParameters(msrest.serialization.Model):
695    """The parameters used to generate credentials for a specified token or user of a container registry.
696
697    :param token_id: The resource ID of the token for which credentials have to be generated.
698    :type token_id: str
699    :param expiry: The expiry date of the generated credentials after which the credentials become
700     invalid.
701    :type expiry: ~datetime.datetime
702    :param name: Specifies name of the password which should be regenerated if any -- password1 or
703     password2. Possible values include: "password1", "password2".
704    :type name: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenPasswordName
705    """
706
707    _attribute_map = {
708        'token_id': {'key': 'tokenId', 'type': 'str'},
709        'expiry': {'key': 'expiry', 'type': 'iso-8601'},
710        'name': {'key': 'name', 'type': 'str'},
711    }
712
713    def __init__(
714        self,
715        **kwargs
716    ):
717        super(GenerateCredentialsParameters, self).__init__(**kwargs)
718        self.token_id = kwargs.get('token_id', None)
719        self.expiry = kwargs.get('expiry', None)
720        self.name = kwargs.get('name', None)
721
722
723class GenerateCredentialsResult(msrest.serialization.Model):
724    """The response from the GenerateCredentials operation.
725
726    :param username: The username for a container registry.
727    :type username: str
728    :param passwords: The list of passwords for a container registry.
729    :type passwords: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenPassword]
730    """
731
732    _attribute_map = {
733        'username': {'key': 'username', 'type': 'str'},
734        'passwords': {'key': 'passwords', 'type': '[TokenPassword]'},
735    }
736
737    def __init__(
738        self,
739        **kwargs
740    ):
741        super(GenerateCredentialsResult, self).__init__(**kwargs)
742        self.username = kwargs.get('username', None)
743        self.passwords = kwargs.get('passwords', None)
744
745
746class IdentityProperties(msrest.serialization.Model):
747    """Managed identity for the resource.
748
749    :param principal_id: The principal ID of resource identity.
750    :type principal_id: str
751    :param tenant_id: The tenant ID of resource.
752    :type tenant_id: str
753    :param type: The identity type. Possible values include: "SystemAssigned", "UserAssigned",
754     "SystemAssigned, UserAssigned", "None".
755    :type type: str or
756     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ResourceIdentityType
757    :param user_assigned_identities: The list of user identities associated with the resource. The
758     user identity
759     dictionary key references will be ARM resource ids in the form:
760     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
761         providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
762    :type user_assigned_identities: dict[str,
763     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.UserIdentityProperties]
764    """
765
766    _attribute_map = {
767        'principal_id': {'key': 'principalId', 'type': 'str'},
768        'tenant_id': {'key': 'tenantId', 'type': 'str'},
769        'type': {'key': 'type', 'type': 'str'},
770        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserIdentityProperties}'},
771    }
772
773    def __init__(
774        self,
775        **kwargs
776    ):
777        super(IdentityProperties, self).__init__(**kwargs)
778        self.principal_id = kwargs.get('principal_id', None)
779        self.tenant_id = kwargs.get('tenant_id', None)
780        self.type = kwargs.get('type', None)
781        self.user_assigned_identities = kwargs.get('user_assigned_identities', None)
782
783
784class ImportImageParameters(msrest.serialization.Model):
785    """ImportImageParameters.
786
787    All required parameters must be populated in order to send to Azure.
788
789    :param source: Required. The source of the image.
790    :type source: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ImportSource
791    :param target_tags: List of strings of the form repo[:tag]. When tag is omitted the source will
792     be used (or 'latest' if source tag is also omitted).
793    :type target_tags: list[str]
794    :param untagged_target_repositories: List of strings of repository names to do a manifest only
795     copy. No tag will be created.
796    :type untagged_target_repositories: list[str]
797    :param mode: When Force, any existing target tags will be overwritten. When NoForce, any
798     existing target tags will fail the operation before any copying begins. Possible values
799     include: "NoForce", "Force". Default value: "NoForce".
800    :type mode: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ImportMode
801    """
802
803    _validation = {
804        'source': {'required': True},
805    }
806
807    _attribute_map = {
808        'source': {'key': 'source', 'type': 'ImportSource'},
809        'target_tags': {'key': 'targetTags', 'type': '[str]'},
810        'untagged_target_repositories': {'key': 'untaggedTargetRepositories', 'type': '[str]'},
811        'mode': {'key': 'mode', 'type': 'str'},
812    }
813
814    def __init__(
815        self,
816        **kwargs
817    ):
818        super(ImportImageParameters, self).__init__(**kwargs)
819        self.source = kwargs['source']
820        self.target_tags = kwargs.get('target_tags', None)
821        self.untagged_target_repositories = kwargs.get('untagged_target_repositories', None)
822        self.mode = kwargs.get('mode', "NoForce")
823
824
825class ImportPipeline(ProxyResource):
826    """An object that represents an import pipeline for a container registry.
827
828    Variables are only populated by the server, and will be ignored when sending a request.
829
830    :ivar id: The resource ID.
831    :vartype id: str
832    :ivar name: The name of the resource.
833    :vartype name: str
834    :ivar type: The type of the resource.
835    :vartype type: str
836    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
837    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
838    :param location: The location of the import pipeline.
839    :type location: str
840    :param identity: The identity of the import pipeline.
841    :type identity: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.IdentityProperties
842    :param source: The source properties of the import pipeline.
843    :type source:
844     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ImportPipelineSourceProperties
845    :param trigger: The properties that describe the trigger of the import pipeline.
846    :type trigger:
847     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineTriggerProperties
848    :param options: The list of all options configured for the pipeline.
849    :type options: list[str or
850     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineOptions]
851    :ivar provisioning_state: The provisioning state of the pipeline at the time the operation was
852     called. Possible values include: "Creating", "Updating", "Deleting", "Succeeded", "Failed",
853     "Canceled".
854    :vartype provisioning_state: str or
855     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
856    """
857
858    _validation = {
859        'id': {'readonly': True},
860        'name': {'readonly': True},
861        'type': {'readonly': True},
862        'system_data': {'readonly': True},
863        'provisioning_state': {'readonly': True},
864    }
865
866    _attribute_map = {
867        'id': {'key': 'id', 'type': 'str'},
868        'name': {'key': 'name', 'type': 'str'},
869        'type': {'key': 'type', 'type': 'str'},
870        'system_data': {'key': 'systemData', 'type': 'SystemData'},
871        'location': {'key': 'location', 'type': 'str'},
872        'identity': {'key': 'identity', 'type': 'IdentityProperties'},
873        'source': {'key': 'properties.source', 'type': 'ImportPipelineSourceProperties'},
874        'trigger': {'key': 'properties.trigger', 'type': 'PipelineTriggerProperties'},
875        'options': {'key': 'properties.options', 'type': '[str]'},
876        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
877    }
878
879    def __init__(
880        self,
881        **kwargs
882    ):
883        super(ImportPipeline, self).__init__(**kwargs)
884        self.location = kwargs.get('location', None)
885        self.identity = kwargs.get('identity', None)
886        self.source = kwargs.get('source', None)
887        self.trigger = kwargs.get('trigger', None)
888        self.options = kwargs.get('options', None)
889        self.provisioning_state = None
890
891
892class ImportPipelineListResult(msrest.serialization.Model):
893    """The result of a request to list import pipelines for a container registry.
894
895    :param value: The list of import pipelines. Since this list may be incomplete, the nextLink
896     field should be used to request the next list of import pipelines.
897    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.ImportPipeline]
898    :param next_link: The URI that can be used to request the next list of pipeline runs.
899    :type next_link: str
900    """
901
902    _attribute_map = {
903        'value': {'key': 'value', 'type': '[ImportPipeline]'},
904        'next_link': {'key': 'nextLink', 'type': 'str'},
905    }
906
907    def __init__(
908        self,
909        **kwargs
910    ):
911        super(ImportPipelineListResult, self).__init__(**kwargs)
912        self.value = kwargs.get('value', None)
913        self.next_link = kwargs.get('next_link', None)
914
915
916class ImportPipelineSourceProperties(msrest.serialization.Model):
917    """The properties of the import pipeline source.
918
919    All required parameters must be populated in order to send to Azure.
920
921    :param type: The type of source for the import pipeline. Possible values include:
922     "AzureStorageBlobContainer". Default value: "AzureStorageBlobContainer".
923    :type type: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineSourceType
924    :param uri: The source uri of the import pipeline.
925     When 'AzureStorageBlob': "https://accountName.blob.core.windows.net/containerName/blobName"
926     When 'AzureStorageBlobContainer': "https://accountName.blob.core.windows.net/containerName".
927    :type uri: str
928    :param key_vault_uri: Required. They key vault secret uri to obtain the source storage SAS
929     token.
930    :type key_vault_uri: str
931    """
932
933    _validation = {
934        'key_vault_uri': {'required': True},
935    }
936
937    _attribute_map = {
938        'type': {'key': 'type', 'type': 'str'},
939        'uri': {'key': 'uri', 'type': 'str'},
940        'key_vault_uri': {'key': 'keyVaultUri', 'type': 'str'},
941    }
942
943    def __init__(
944        self,
945        **kwargs
946    ):
947        super(ImportPipelineSourceProperties, self).__init__(**kwargs)
948        self.type = kwargs.get('type', "AzureStorageBlobContainer")
949        self.uri = kwargs.get('uri', None)
950        self.key_vault_uri = kwargs['key_vault_uri']
951
952
953class ImportSource(msrest.serialization.Model):
954    """ImportSource.
955
956    All required parameters must be populated in order to send to Azure.
957
958    :param resource_id: The resource identifier of the source Azure Container Registry.
959    :type resource_id: str
960    :param registry_uri: The address of the source registry (e.g. 'mcr.microsoft.com').
961    :type registry_uri: str
962    :param credentials: Credentials used when importing from a registry uri.
963    :type credentials:
964     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ImportSourceCredentials
965    :param source_image: Required. Repository name of the source image.
966     Specify an image by repository ('hello-world'). This will use the 'latest' tag.
967     Specify an image by tag ('hello-world:latest').
968     Specify an image by sha256-based manifest digest ('hello-world@sha256:abc123').
969    :type source_image: str
970    """
971
972    _validation = {
973        'source_image': {'required': True},
974    }
975
976    _attribute_map = {
977        'resource_id': {'key': 'resourceId', 'type': 'str'},
978        'registry_uri': {'key': 'registryUri', 'type': 'str'},
979        'credentials': {'key': 'credentials', 'type': 'ImportSourceCredentials'},
980        'source_image': {'key': 'sourceImage', 'type': 'str'},
981    }
982
983    def __init__(
984        self,
985        **kwargs
986    ):
987        super(ImportSource, self).__init__(**kwargs)
988        self.resource_id = kwargs.get('resource_id', None)
989        self.registry_uri = kwargs.get('registry_uri', None)
990        self.credentials = kwargs.get('credentials', None)
991        self.source_image = kwargs['source_image']
992
993
994class ImportSourceCredentials(msrest.serialization.Model):
995    """ImportSourceCredentials.
996
997    All required parameters must be populated in order to send to Azure.
998
999    :param username: The username to authenticate with the source registry.
1000    :type username: str
1001    :param password: Required. The password used to authenticate with the source registry.
1002    :type password: str
1003    """
1004
1005    _validation = {
1006        'password': {'required': True},
1007    }
1008
1009    _attribute_map = {
1010        'username': {'key': 'username', 'type': 'str'},
1011        'password': {'key': 'password', 'type': 'str'},
1012    }
1013
1014    def __init__(
1015        self,
1016        **kwargs
1017    ):
1018        super(ImportSourceCredentials, self).__init__(**kwargs)
1019        self.username = kwargs.get('username', None)
1020        self.password = kwargs['password']
1021
1022
1023class InnerErrorDescription(msrest.serialization.Model):
1024    """inner error.
1025
1026    All required parameters must be populated in order to send to Azure.
1027
1028    :param code: Required. error code.
1029    :type code: str
1030    :param message: Required. error message.
1031    :type message: str
1032    :param target: target of the particular error.
1033    :type target: str
1034    """
1035
1036    _validation = {
1037        'code': {'required': True},
1038        'message': {'required': True},
1039    }
1040
1041    _attribute_map = {
1042        'code': {'key': 'code', 'type': 'str'},
1043        'message': {'key': 'message', 'type': 'str'},
1044        'target': {'key': 'target', 'type': 'str'},
1045    }
1046
1047    def __init__(
1048        self,
1049        **kwargs
1050    ):
1051        super(InnerErrorDescription, self).__init__(**kwargs)
1052        self.code = kwargs['code']
1053        self.message = kwargs['message']
1054        self.target = kwargs.get('target', None)
1055
1056
1057class IPRule(msrest.serialization.Model):
1058    """IP rule with specific IP or IP range in CIDR format.
1059
1060    All required parameters must be populated in order to send to Azure.
1061
1062    :param action: The action of IP ACL rule. Possible values include: "Allow".
1063    :type action: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Action
1064    :param ip_address_or_range: Required. Specifies the IP or IP range in CIDR format. Only IPV4
1065     address is allowed.
1066    :type ip_address_or_range: str
1067    """
1068
1069    _validation = {
1070        'ip_address_or_range': {'required': True},
1071    }
1072
1073    _attribute_map = {
1074        'action': {'key': 'action', 'type': 'str'},
1075        'ip_address_or_range': {'key': 'value', 'type': 'str'},
1076    }
1077
1078    def __init__(
1079        self,
1080        **kwargs
1081    ):
1082        super(IPRule, self).__init__(**kwargs)
1083        self.action = kwargs.get('action', None)
1084        self.ip_address_or_range = kwargs['ip_address_or_range']
1085
1086
1087class KeyVaultProperties(msrest.serialization.Model):
1088    """KeyVaultProperties.
1089
1090    Variables are only populated by the server, and will be ignored when sending a request.
1091
1092    :param key_identifier: Key vault uri to access the encryption key.
1093    :type key_identifier: str
1094    :ivar versioned_key_identifier: The fully qualified key identifier that includes the version of
1095     the key that is actually used for encryption.
1096    :vartype versioned_key_identifier: str
1097    :param identity: The client id of the identity which will be used to access key vault.
1098    :type identity: str
1099    :ivar key_rotation_enabled: Auto key rotation status for a CMK enabled registry.
1100    :vartype key_rotation_enabled: bool
1101    :ivar last_key_rotation_timestamp: Timestamp of the last successful key rotation.
1102    :vartype last_key_rotation_timestamp: ~datetime.datetime
1103    """
1104
1105    _validation = {
1106        'versioned_key_identifier': {'readonly': True},
1107        'key_rotation_enabled': {'readonly': True},
1108        'last_key_rotation_timestamp': {'readonly': True},
1109    }
1110
1111    _attribute_map = {
1112        'key_identifier': {'key': 'keyIdentifier', 'type': 'str'},
1113        'versioned_key_identifier': {'key': 'versionedKeyIdentifier', 'type': 'str'},
1114        'identity': {'key': 'identity', 'type': 'str'},
1115        'key_rotation_enabled': {'key': 'keyRotationEnabled', 'type': 'bool'},
1116        'last_key_rotation_timestamp': {'key': 'lastKeyRotationTimestamp', 'type': 'iso-8601'},
1117    }
1118
1119    def __init__(
1120        self,
1121        **kwargs
1122    ):
1123        super(KeyVaultProperties, self).__init__(**kwargs)
1124        self.key_identifier = kwargs.get('key_identifier', None)
1125        self.versioned_key_identifier = None
1126        self.identity = kwargs.get('identity', None)
1127        self.key_rotation_enabled = None
1128        self.last_key_rotation_timestamp = None
1129
1130
1131class LoggingProperties(msrest.serialization.Model):
1132    """The logging properties of the connected registry.
1133
1134    :param log_level: The verbosity of logs persisted on the connected registry. Possible values
1135     include: "Debug", "Information", "Warning", "Error", "None". Default value: "Information".
1136    :type log_level: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.LogLevel
1137    :param audit_log_status: Indicates whether audit logs are enabled on the connected registry.
1138     Possible values include: "Enabled", "Disabled". Default value: "Disabled".
1139    :type audit_log_status: str or
1140     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.AuditLogStatus
1141    """
1142
1143    _attribute_map = {
1144        'log_level': {'key': 'logLevel', 'type': 'str'},
1145        'audit_log_status': {'key': 'auditLogStatus', 'type': 'str'},
1146    }
1147
1148    def __init__(
1149        self,
1150        **kwargs
1151    ):
1152        super(LoggingProperties, self).__init__(**kwargs)
1153        self.log_level = kwargs.get('log_level', "Information")
1154        self.audit_log_status = kwargs.get('audit_log_status', "Disabled")
1155
1156
1157class LoginServerProperties(msrest.serialization.Model):
1158    """The login server properties of the connected registry.
1159
1160    Variables are only populated by the server, and will be ignored when sending a request.
1161
1162    :ivar host: The host of the connected registry. Can be FQDN or IP.
1163    :vartype host: str
1164    :ivar tls: The TLS properties of the connected registry login server.
1165    :vartype tls: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TlsProperties
1166    """
1167
1168    _validation = {
1169        'host': {'readonly': True},
1170        'tls': {'readonly': True},
1171    }
1172
1173    _attribute_map = {
1174        'host': {'key': 'host', 'type': 'str'},
1175        'tls': {'key': 'tls', 'type': 'TlsProperties'},
1176    }
1177
1178    def __init__(
1179        self,
1180        **kwargs
1181    ):
1182        super(LoginServerProperties, self).__init__(**kwargs)
1183        self.host = None
1184        self.tls = None
1185
1186
1187class NetworkRuleSet(msrest.serialization.Model):
1188    """The network rule set for a container registry.
1189
1190    All required parameters must be populated in order to send to Azure.
1191
1192    :param default_action: Required. The default action of allow or deny when no other rules match.
1193     Possible values include: "Allow", "Deny". Default value: "Allow".
1194    :type default_action: str or
1195     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.DefaultAction
1196    :param virtual_network_rules: The virtual network rules.
1197    :type virtual_network_rules:
1198     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.VirtualNetworkRule]
1199    :param ip_rules: The IP ACL rules.
1200    :type ip_rules: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.IPRule]
1201    """
1202
1203    _validation = {
1204        'default_action': {'required': True},
1205    }
1206
1207    _attribute_map = {
1208        'default_action': {'key': 'defaultAction', 'type': 'str'},
1209        'virtual_network_rules': {'key': 'virtualNetworkRules', 'type': '[VirtualNetworkRule]'},
1210        'ip_rules': {'key': 'ipRules', 'type': '[IPRule]'},
1211    }
1212
1213    def __init__(
1214        self,
1215        **kwargs
1216    ):
1217        super(NetworkRuleSet, self).__init__(**kwargs)
1218        self.default_action = kwargs.get('default_action', "Allow")
1219        self.virtual_network_rules = kwargs.get('virtual_network_rules', None)
1220        self.ip_rules = kwargs.get('ip_rules', None)
1221
1222
1223class OperationDefinition(msrest.serialization.Model):
1224    """The definition of a container registry operation.
1225
1226    :param origin: The origin information of the container registry operation.
1227    :type origin: str
1228    :param name: Operation name: {provider}/{resource}/{operation}.
1229    :type name: str
1230    :param display: The display information for the container registry operation.
1231    :type display:
1232     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.OperationDisplayDefinition
1233    :param service_specification: The definition of Azure Monitoring service.
1234    :type service_specification:
1235     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.OperationServiceSpecificationDefinition
1236    """
1237
1238    _attribute_map = {
1239        'origin': {'key': 'origin', 'type': 'str'},
1240        'name': {'key': 'name', 'type': 'str'},
1241        'display': {'key': 'display', 'type': 'OperationDisplayDefinition'},
1242        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationServiceSpecificationDefinition'},
1243    }
1244
1245    def __init__(
1246        self,
1247        **kwargs
1248    ):
1249        super(OperationDefinition, self).__init__(**kwargs)
1250        self.origin = kwargs.get('origin', None)
1251        self.name = kwargs.get('name', None)
1252        self.display = kwargs.get('display', None)
1253        self.service_specification = kwargs.get('service_specification', None)
1254
1255
1256class OperationDisplayDefinition(msrest.serialization.Model):
1257    """The display information for a container registry operation.
1258
1259    :param provider: The resource provider name: Microsoft.ContainerRegistry.
1260    :type provider: str
1261    :param resource: The resource on which the operation is performed.
1262    :type resource: str
1263    :param operation: The operation that users can perform.
1264    :type operation: str
1265    :param description: The description for the operation.
1266    :type description: str
1267    """
1268
1269    _attribute_map = {
1270        'provider': {'key': 'provider', 'type': 'str'},
1271        'resource': {'key': 'resource', 'type': 'str'},
1272        'operation': {'key': 'operation', 'type': 'str'},
1273        'description': {'key': 'description', 'type': 'str'},
1274    }
1275
1276    def __init__(
1277        self,
1278        **kwargs
1279    ):
1280        super(OperationDisplayDefinition, self).__init__(**kwargs)
1281        self.provider = kwargs.get('provider', None)
1282        self.resource = kwargs.get('resource', None)
1283        self.operation = kwargs.get('operation', None)
1284        self.description = kwargs.get('description', None)
1285
1286
1287class OperationListResult(msrest.serialization.Model):
1288    """The result of a request to list container registry operations.
1289
1290    :param value: The list of container registry operations. Since this list may be incomplete, the
1291     nextLink field should be used to request the next list of operations.
1292    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.OperationDefinition]
1293    :param next_link: The URI that can be used to request the next list of container registry
1294     operations.
1295    :type next_link: str
1296    """
1297
1298    _attribute_map = {
1299        'value': {'key': 'value', 'type': '[OperationDefinition]'},
1300        'next_link': {'key': 'nextLink', 'type': 'str'},
1301    }
1302
1303    def __init__(
1304        self,
1305        **kwargs
1306    ):
1307        super(OperationListResult, self).__init__(**kwargs)
1308        self.value = kwargs.get('value', None)
1309        self.next_link = kwargs.get('next_link', None)
1310
1311
1312class OperationLogSpecificationDefinition(msrest.serialization.Model):
1313    """The definition of Azure Monitoring log.
1314
1315    :param name: Log name.
1316    :type name: str
1317    :param display_name: Log display name.
1318    :type display_name: str
1319    :param blob_duration: Log blob duration.
1320    :type blob_duration: str
1321    """
1322
1323    _attribute_map = {
1324        'name': {'key': 'name', 'type': 'str'},
1325        'display_name': {'key': 'displayName', 'type': 'str'},
1326        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
1327    }
1328
1329    def __init__(
1330        self,
1331        **kwargs
1332    ):
1333        super(OperationLogSpecificationDefinition, self).__init__(**kwargs)
1334        self.name = kwargs.get('name', None)
1335        self.display_name = kwargs.get('display_name', None)
1336        self.blob_duration = kwargs.get('blob_duration', None)
1337
1338
1339class OperationMetricSpecificationDefinition(msrest.serialization.Model):
1340    """The definition of Azure Monitoring metric.
1341
1342    :param name: Metric name.
1343    :type name: str
1344    :param display_name: Metric display name.
1345    :type display_name: str
1346    :param display_description: Metric description.
1347    :type display_description: str
1348    :param unit: Metric unit.
1349    :type unit: str
1350    :param aggregation_type: Metric aggregation type.
1351    :type aggregation_type: str
1352    :param internal_metric_name: Internal metric name.
1353    :type internal_metric_name: str
1354    """
1355
1356    _attribute_map = {
1357        'name': {'key': 'name', 'type': 'str'},
1358        'display_name': {'key': 'displayName', 'type': 'str'},
1359        'display_description': {'key': 'displayDescription', 'type': 'str'},
1360        'unit': {'key': 'unit', 'type': 'str'},
1361        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
1362        'internal_metric_name': {'key': 'internalMetricName', 'type': 'str'},
1363    }
1364
1365    def __init__(
1366        self,
1367        **kwargs
1368    ):
1369        super(OperationMetricSpecificationDefinition, self).__init__(**kwargs)
1370        self.name = kwargs.get('name', None)
1371        self.display_name = kwargs.get('display_name', None)
1372        self.display_description = kwargs.get('display_description', None)
1373        self.unit = kwargs.get('unit', None)
1374        self.aggregation_type = kwargs.get('aggregation_type', None)
1375        self.internal_metric_name = kwargs.get('internal_metric_name', None)
1376
1377
1378class OperationServiceSpecificationDefinition(msrest.serialization.Model):
1379    """The definition of Azure Monitoring list.
1380
1381    :param metric_specifications: A list of Azure Monitoring metrics definition.
1382    :type metric_specifications:
1383     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.OperationMetricSpecificationDefinition]
1384    :param log_specifications: A list of Azure Monitoring log definitions.
1385    :type log_specifications:
1386     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.OperationLogSpecificationDefinition]
1387    """
1388
1389    _attribute_map = {
1390        'metric_specifications': {'key': 'metricSpecifications', 'type': '[OperationMetricSpecificationDefinition]'},
1391        'log_specifications': {'key': 'logSpecifications', 'type': '[OperationLogSpecificationDefinition]'},
1392    }
1393
1394    def __init__(
1395        self,
1396        **kwargs
1397    ):
1398        super(OperationServiceSpecificationDefinition, self).__init__(**kwargs)
1399        self.metric_specifications = kwargs.get('metric_specifications', None)
1400        self.log_specifications = kwargs.get('log_specifications', None)
1401
1402
1403class ParentProperties(msrest.serialization.Model):
1404    """The properties of the connected registry parent.
1405
1406    All required parameters must be populated in order to send to Azure.
1407
1408    :param id: The resource ID of the parent to which the connected registry will be associated.
1409    :type id: str
1410    :param sync_properties: Required. The sync properties of the connected registry with its
1411     parent.
1412    :type sync_properties: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SyncProperties
1413    """
1414
1415    _validation = {
1416        'sync_properties': {'required': True},
1417    }
1418
1419    _attribute_map = {
1420        'id': {'key': 'id', 'type': 'str'},
1421        'sync_properties': {'key': 'syncProperties', 'type': 'SyncProperties'},
1422    }
1423
1424    def __init__(
1425        self,
1426        **kwargs
1427    ):
1428        super(ParentProperties, self).__init__(**kwargs)
1429        self.id = kwargs.get('id', None)
1430        self.sync_properties = kwargs['sync_properties']
1431
1432
1433class PipelineRun(ProxyResource):
1434    """An object that represents a pipeline run for a container registry.
1435
1436    Variables are only populated by the server, and will be ignored when sending a request.
1437
1438    :ivar id: The resource ID.
1439    :vartype id: str
1440    :ivar name: The name of the resource.
1441    :vartype name: str
1442    :ivar type: The type of the resource.
1443    :vartype type: str
1444    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
1445    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
1446    :ivar provisioning_state: The provisioning state of a pipeline run. Possible values include:
1447     "Creating", "Updating", "Deleting", "Succeeded", "Failed", "Canceled".
1448    :vartype provisioning_state: str or
1449     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
1450    :param request: The request parameters for a pipeline run.
1451    :type request: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRunRequest
1452    :ivar response: The response of a pipeline run.
1453    :vartype response: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRunResponse
1454    :param force_update_tag: How the pipeline run should be forced to recreate even if the pipeline
1455     run configuration has not changed.
1456    :type force_update_tag: str
1457    """
1458
1459    _validation = {
1460        'id': {'readonly': True},
1461        'name': {'readonly': True},
1462        'type': {'readonly': True},
1463        'system_data': {'readonly': True},
1464        'provisioning_state': {'readonly': True},
1465        'response': {'readonly': True},
1466    }
1467
1468    _attribute_map = {
1469        'id': {'key': 'id', 'type': 'str'},
1470        'name': {'key': 'name', 'type': 'str'},
1471        'type': {'key': 'type', 'type': 'str'},
1472        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1473        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1474        'request': {'key': 'properties.request', 'type': 'PipelineRunRequest'},
1475        'response': {'key': 'properties.response', 'type': 'PipelineRunResponse'},
1476        'force_update_tag': {'key': 'properties.forceUpdateTag', 'type': 'str'},
1477    }
1478
1479    def __init__(
1480        self,
1481        **kwargs
1482    ):
1483        super(PipelineRun, self).__init__(**kwargs)
1484        self.provisioning_state = None
1485        self.request = kwargs.get('request', None)
1486        self.response = None
1487        self.force_update_tag = kwargs.get('force_update_tag', None)
1488
1489
1490class PipelineRunListResult(msrest.serialization.Model):
1491    """The result of a request to list pipeline runs for a container registry.
1492
1493    :param value: The list of pipeline runs. Since this list may be incomplete, the nextLink field
1494     should be used to request the next list of pipeline runs.
1495    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRun]
1496    :param next_link: The URI that can be used to request the next list of pipeline runs.
1497    :type next_link: str
1498    """
1499
1500    _attribute_map = {
1501        'value': {'key': 'value', 'type': '[PipelineRun]'},
1502        'next_link': {'key': 'nextLink', 'type': 'str'},
1503    }
1504
1505    def __init__(
1506        self,
1507        **kwargs
1508    ):
1509        super(PipelineRunListResult, self).__init__(**kwargs)
1510        self.value = kwargs.get('value', None)
1511        self.next_link = kwargs.get('next_link', None)
1512
1513
1514class PipelineRunRequest(msrest.serialization.Model):
1515    """The request properties provided for a pipeline run.
1516
1517    :param pipeline_resource_id: The resource ID of the pipeline to run.
1518    :type pipeline_resource_id: str
1519    :param artifacts: List of source artifacts to be transferred by the pipeline.
1520     Specify an image by repository ('hello-world'). This will use the 'latest' tag.
1521     Specify an image by tag ('hello-world:latest').
1522     Specify an image by sha256-based manifest digest ('hello-world@sha256:abc123').
1523    :type artifacts: list[str]
1524    :param source: The source properties of the pipeline run.
1525    :type source:
1526     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRunSourceProperties
1527    :param target: The target properties of the pipeline run.
1528    :type target:
1529     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRunTargetProperties
1530    :param catalog_digest: The digest of the tar used to transfer the artifacts.
1531    :type catalog_digest: str
1532    """
1533
1534    _attribute_map = {
1535        'pipeline_resource_id': {'key': 'pipelineResourceId', 'type': 'str'},
1536        'artifacts': {'key': 'artifacts', 'type': '[str]'},
1537        'source': {'key': 'source', 'type': 'PipelineRunSourceProperties'},
1538        'target': {'key': 'target', 'type': 'PipelineRunTargetProperties'},
1539        'catalog_digest': {'key': 'catalogDigest', 'type': 'str'},
1540    }
1541
1542    def __init__(
1543        self,
1544        **kwargs
1545    ):
1546        super(PipelineRunRequest, self).__init__(**kwargs)
1547        self.pipeline_resource_id = kwargs.get('pipeline_resource_id', None)
1548        self.artifacts = kwargs.get('artifacts', None)
1549        self.source = kwargs.get('source', None)
1550        self.target = kwargs.get('target', None)
1551        self.catalog_digest = kwargs.get('catalog_digest', None)
1552
1553
1554class PipelineRunResponse(msrest.serialization.Model):
1555    """The response properties returned for a pipeline run.
1556
1557    :param status: The current status of the pipeline run.
1558    :type status: str
1559    :param imported_artifacts: The artifacts imported in the pipeline run.
1560    :type imported_artifacts: list[str]
1561    :param progress: The current progress of the copy operation.
1562    :type progress: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProgressProperties
1563    :param start_time: The time the pipeline run started.
1564    :type start_time: ~datetime.datetime
1565    :param finish_time: The time the pipeline run finished.
1566    :type finish_time: ~datetime.datetime
1567    :param source: The source of the pipeline run.
1568    :type source:
1569     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ImportPipelineSourceProperties
1570    :param target: The target of the pipeline run.
1571    :type target:
1572     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ExportPipelineTargetProperties
1573    :param catalog_digest: The digest of the tar used to transfer the artifacts.
1574    :type catalog_digest: str
1575    :param trigger: The trigger that caused the pipeline run.
1576    :type trigger:
1577     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineTriggerDescriptor
1578    :param pipeline_run_error_message: The detailed error message for the pipeline run in the case
1579     of failure.
1580    :type pipeline_run_error_message: str
1581    """
1582
1583    _attribute_map = {
1584        'status': {'key': 'status', 'type': 'str'},
1585        'imported_artifacts': {'key': 'importedArtifacts', 'type': '[str]'},
1586        'progress': {'key': 'progress', 'type': 'ProgressProperties'},
1587        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
1588        'finish_time': {'key': 'finishTime', 'type': 'iso-8601'},
1589        'source': {'key': 'source', 'type': 'ImportPipelineSourceProperties'},
1590        'target': {'key': 'target', 'type': 'ExportPipelineTargetProperties'},
1591        'catalog_digest': {'key': 'catalogDigest', 'type': 'str'},
1592        'trigger': {'key': 'trigger', 'type': 'PipelineTriggerDescriptor'},
1593        'pipeline_run_error_message': {'key': 'pipelineRunErrorMessage', 'type': 'str'},
1594    }
1595
1596    def __init__(
1597        self,
1598        **kwargs
1599    ):
1600        super(PipelineRunResponse, self).__init__(**kwargs)
1601        self.status = kwargs.get('status', None)
1602        self.imported_artifacts = kwargs.get('imported_artifacts', None)
1603        self.progress = kwargs.get('progress', None)
1604        self.start_time = kwargs.get('start_time', None)
1605        self.finish_time = kwargs.get('finish_time', None)
1606        self.source = kwargs.get('source', None)
1607        self.target = kwargs.get('target', None)
1608        self.catalog_digest = kwargs.get('catalog_digest', None)
1609        self.trigger = kwargs.get('trigger', None)
1610        self.pipeline_run_error_message = kwargs.get('pipeline_run_error_message', None)
1611
1612
1613class PipelineRunSourceProperties(msrest.serialization.Model):
1614    """PipelineRunSourceProperties.
1615
1616    :param type: The type of the source. Possible values include: "AzureStorageBlob". Default
1617     value: "AzureStorageBlob".
1618    :type type: str or
1619     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRunSourceType
1620    :param name: The name of the source.
1621    :type name: str
1622    """
1623
1624    _attribute_map = {
1625        'type': {'key': 'type', 'type': 'str'},
1626        'name': {'key': 'name', 'type': 'str'},
1627    }
1628
1629    def __init__(
1630        self,
1631        **kwargs
1632    ):
1633        super(PipelineRunSourceProperties, self).__init__(**kwargs)
1634        self.type = kwargs.get('type', "AzureStorageBlob")
1635        self.name = kwargs.get('name', None)
1636
1637
1638class PipelineRunTargetProperties(msrest.serialization.Model):
1639    """PipelineRunTargetProperties.
1640
1641    :param type: The type of the target. Possible values include: "AzureStorageBlob". Default
1642     value: "AzureStorageBlob".
1643    :type type: str or
1644     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineRunTargetType
1645    :param name: The name of the target.
1646    :type name: str
1647    """
1648
1649    _attribute_map = {
1650        'type': {'key': 'type', 'type': 'str'},
1651        'name': {'key': 'name', 'type': 'str'},
1652    }
1653
1654    def __init__(
1655        self,
1656        **kwargs
1657    ):
1658        super(PipelineRunTargetProperties, self).__init__(**kwargs)
1659        self.type = kwargs.get('type', "AzureStorageBlob")
1660        self.name = kwargs.get('name', None)
1661
1662
1663class PipelineSourceTriggerDescriptor(msrest.serialization.Model):
1664    """PipelineSourceTriggerDescriptor.
1665
1666    :param timestamp: The timestamp when the source update happened.
1667    :type timestamp: ~datetime.datetime
1668    """
1669
1670    _attribute_map = {
1671        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
1672    }
1673
1674    def __init__(
1675        self,
1676        **kwargs
1677    ):
1678        super(PipelineSourceTriggerDescriptor, self).__init__(**kwargs)
1679        self.timestamp = kwargs.get('timestamp', None)
1680
1681
1682class PipelineSourceTriggerProperties(msrest.serialization.Model):
1683    """PipelineSourceTriggerProperties.
1684
1685    All required parameters must be populated in order to send to Azure.
1686
1687    :param status: Required. The current status of the source trigger. Possible values include:
1688     "Enabled", "Disabled". Default value: "Enabled".
1689    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TriggerStatus
1690    """
1691
1692    _validation = {
1693        'status': {'required': True},
1694    }
1695
1696    _attribute_map = {
1697        'status': {'key': 'status', 'type': 'str'},
1698    }
1699
1700    def __init__(
1701        self,
1702        **kwargs
1703    ):
1704        super(PipelineSourceTriggerProperties, self).__init__(**kwargs)
1705        self.status = kwargs.get('status', "Enabled")
1706
1707
1708class PipelineTriggerDescriptor(msrest.serialization.Model):
1709    """PipelineTriggerDescriptor.
1710
1711    :param source_trigger: The source trigger that caused the pipeline run.
1712    :type source_trigger:
1713     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineSourceTriggerDescriptor
1714    """
1715
1716    _attribute_map = {
1717        'source_trigger': {'key': 'sourceTrigger', 'type': 'PipelineSourceTriggerDescriptor'},
1718    }
1719
1720    def __init__(
1721        self,
1722        **kwargs
1723    ):
1724        super(PipelineTriggerDescriptor, self).__init__(**kwargs)
1725        self.source_trigger = kwargs.get('source_trigger', None)
1726
1727
1728class PipelineTriggerProperties(msrest.serialization.Model):
1729    """PipelineTriggerProperties.
1730
1731    :param source_trigger: The source trigger properties of the pipeline.
1732    :type source_trigger:
1733     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PipelineSourceTriggerProperties
1734    """
1735
1736    _attribute_map = {
1737        'source_trigger': {'key': 'sourceTrigger', 'type': 'PipelineSourceTriggerProperties'},
1738    }
1739
1740    def __init__(
1741        self,
1742        **kwargs
1743    ):
1744        super(PipelineTriggerProperties, self).__init__(**kwargs)
1745        self.source_trigger = kwargs.get('source_trigger', None)
1746
1747
1748class Policies(msrest.serialization.Model):
1749    """The policies for a container registry.
1750
1751    :param quarantine_policy: The quarantine policy for a container registry.
1752    :type quarantine_policy:
1753     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.QuarantinePolicy
1754    :param trust_policy: The content trust policy for a container registry.
1755    :type trust_policy: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TrustPolicy
1756    :param retention_policy: The retention policy for a container registry.
1757    :type retention_policy:
1758     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.RetentionPolicy
1759    """
1760
1761    _attribute_map = {
1762        'quarantine_policy': {'key': 'quarantinePolicy', 'type': 'QuarantinePolicy'},
1763        'trust_policy': {'key': 'trustPolicy', 'type': 'TrustPolicy'},
1764        'retention_policy': {'key': 'retentionPolicy', 'type': 'RetentionPolicy'},
1765    }
1766
1767    def __init__(
1768        self,
1769        **kwargs
1770    ):
1771        super(Policies, self).__init__(**kwargs)
1772        self.quarantine_policy = kwargs.get('quarantine_policy', None)
1773        self.trust_policy = kwargs.get('trust_policy', None)
1774        self.retention_policy = kwargs.get('retention_policy', None)
1775
1776
1777class PrivateEndpoint(msrest.serialization.Model):
1778    """The Private Endpoint resource.
1779
1780    :param id: This is private endpoint resource created with Microsoft.Network resource provider.
1781    :type id: str
1782    """
1783
1784    _attribute_map = {
1785        'id': {'key': 'id', 'type': 'str'},
1786    }
1787
1788    def __init__(
1789        self,
1790        **kwargs
1791    ):
1792        super(PrivateEndpoint, self).__init__(**kwargs)
1793        self.id = kwargs.get('id', None)
1794
1795
1796class PrivateEndpointConnection(ProxyResource):
1797    """An object that represents a private endpoint connection for a container registry.
1798
1799    Variables are only populated by the server, and will be ignored when sending a request.
1800
1801    :ivar id: The resource ID.
1802    :vartype id: str
1803    :ivar name: The name of the resource.
1804    :vartype name: str
1805    :ivar type: The type of the resource.
1806    :vartype type: str
1807    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
1808    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
1809    :param private_endpoint: The resource of private endpoint.
1810    :type private_endpoint:
1811     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PrivateEndpoint
1812    :param private_link_service_connection_state: A collection of information about the state of
1813     the connection between service consumer and provider.
1814    :type private_link_service_connection_state:
1815     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PrivateLinkServiceConnectionState
1816    :ivar provisioning_state: The provisioning state of private endpoint connection resource.
1817     Possible values include: "Creating", "Updating", "Deleting", "Succeeded", "Failed", "Canceled".
1818    :vartype provisioning_state: str or
1819     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
1820    """
1821
1822    _validation = {
1823        'id': {'readonly': True},
1824        'name': {'readonly': True},
1825        'type': {'readonly': True},
1826        'system_data': {'readonly': True},
1827        'provisioning_state': {'readonly': True},
1828    }
1829
1830    _attribute_map = {
1831        'id': {'key': 'id', 'type': 'str'},
1832        'name': {'key': 'name', 'type': 'str'},
1833        'type': {'key': 'type', 'type': 'str'},
1834        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1835        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
1836        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
1837        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1838    }
1839
1840    def __init__(
1841        self,
1842        **kwargs
1843    ):
1844        super(PrivateEndpointConnection, self).__init__(**kwargs)
1845        self.private_endpoint = kwargs.get('private_endpoint', None)
1846        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
1847        self.provisioning_state = None
1848
1849
1850class PrivateEndpointConnectionListResult(msrest.serialization.Model):
1851    """The result of a request to list private endpoint connections for a container registry.
1852
1853    :param value: The list of private endpoint connections. Since this list may be incomplete, the
1854     nextLink field should be used to request the next list of private endpoint connections.
1855    :type value:
1856     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.PrivateEndpointConnection]
1857    :param next_link: The URI that can be used to request the next list of private endpoint
1858     connections.
1859    :type next_link: str
1860    """
1861
1862    _attribute_map = {
1863        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
1864        'next_link': {'key': 'nextLink', 'type': 'str'},
1865    }
1866
1867    def __init__(
1868        self,
1869        **kwargs
1870    ):
1871        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
1872        self.value = kwargs.get('value', None)
1873        self.next_link = kwargs.get('next_link', None)
1874
1875
1876class PrivateLinkResource(msrest.serialization.Model):
1877    """A resource that supports private link capabilities.
1878
1879    Variables are only populated by the server, and will be ignored when sending a request.
1880
1881    :ivar type: The resource type is private link resource.
1882    :vartype type: str
1883    :param id: The resource ID.
1884    :type id: str
1885    :param name: The name of the resource.
1886    :type name: str
1887    :param group_id: The private link resource group id.
1888    :type group_id: str
1889    :param required_members: The private link resource required member names.
1890    :type required_members: list[str]
1891    :param required_zone_names: The private link resource Private link DNS zone name.
1892    :type required_zone_names: list[str]
1893    """
1894
1895    _validation = {
1896        'type': {'readonly': True},
1897    }
1898
1899    _attribute_map = {
1900        'type': {'key': 'type', 'type': 'str'},
1901        'id': {'key': 'id', 'type': 'str'},
1902        'name': {'key': 'name', 'type': 'str'},
1903        'group_id': {'key': 'properties.groupId', 'type': 'str'},
1904        'required_members': {'key': 'properties.requiredMembers', 'type': '[str]'},
1905        'required_zone_names': {'key': 'properties.requiredZoneNames', 'type': '[str]'},
1906    }
1907
1908    def __init__(
1909        self,
1910        **kwargs
1911    ):
1912        super(PrivateLinkResource, self).__init__(**kwargs)
1913        self.type = None
1914        self.id = kwargs.get('id', None)
1915        self.name = kwargs.get('name', None)
1916        self.group_id = kwargs.get('group_id', None)
1917        self.required_members = kwargs.get('required_members', None)
1918        self.required_zone_names = kwargs.get('required_zone_names', None)
1919
1920
1921class PrivateLinkResourceListResult(msrest.serialization.Model):
1922    """The result of a request to list private link resources for a container registry.
1923
1924    :param value: The list of private link resources. Since this list may be incomplete, the
1925     nextLink field should be used to request the next list of private link resources.
1926    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.PrivateLinkResource]
1927    :param next_link: The URI that can be used to request the next list of private link resources.
1928    :type next_link: str
1929    """
1930
1931    _attribute_map = {
1932        'value': {'key': 'value', 'type': '[PrivateLinkResource]'},
1933        'next_link': {'key': 'nextLink', 'type': 'str'},
1934    }
1935
1936    def __init__(
1937        self,
1938        **kwargs
1939    ):
1940        super(PrivateLinkResourceListResult, self).__init__(**kwargs)
1941        self.value = kwargs.get('value', None)
1942        self.next_link = kwargs.get('next_link', None)
1943
1944
1945class PrivateLinkServiceConnectionState(msrest.serialization.Model):
1946    """The state of a private link service connection.
1947
1948    :param status: The private link service connection status. Possible values include: "Approved",
1949     "Pending", "Rejected", "Disconnected".
1950    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ConnectionStatus
1951    :param description: The description for connection status. For example if connection is
1952     rejected it can indicate reason for rejection.
1953    :type description: str
1954    :param actions_required: A message indicating if changes on the service provider require any
1955     updates on the consumer. Possible values include: "None", "Recreate".
1956    :type actions_required: str or
1957     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ActionsRequired
1958    """
1959
1960    _attribute_map = {
1961        'status': {'key': 'status', 'type': 'str'},
1962        'description': {'key': 'description', 'type': 'str'},
1963        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
1964    }
1965
1966    def __init__(
1967        self,
1968        **kwargs
1969    ):
1970        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
1971        self.status = kwargs.get('status', None)
1972        self.description = kwargs.get('description', None)
1973        self.actions_required = kwargs.get('actions_required', None)
1974
1975
1976class ProgressProperties(msrest.serialization.Model):
1977    """ProgressProperties.
1978
1979    :param percentage: The percentage complete of the copy operation.
1980    :type percentage: str
1981    """
1982
1983    _attribute_map = {
1984        'percentage': {'key': 'percentage', 'type': 'str'},
1985    }
1986
1987    def __init__(
1988        self,
1989        **kwargs
1990    ):
1991        super(ProgressProperties, self).__init__(**kwargs)
1992        self.percentage = kwargs.get('percentage', None)
1993
1994
1995class QuarantinePolicy(msrest.serialization.Model):
1996    """The quarantine policy for a container registry.
1997
1998    :param status: The value that indicates whether the policy is enabled or not. Possible values
1999     include: "enabled", "disabled".
2000    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PolicyStatus
2001    """
2002
2003    _attribute_map = {
2004        'status': {'key': 'status', 'type': 'str'},
2005    }
2006
2007    def __init__(
2008        self,
2009        **kwargs
2010    ):
2011        super(QuarantinePolicy, self).__init__(**kwargs)
2012        self.status = kwargs.get('status', None)
2013
2014
2015class RegenerateCredentialParameters(msrest.serialization.Model):
2016    """The parameters used to regenerate the login credential.
2017
2018    All required parameters must be populated in order to send to Azure.
2019
2020    :param name: Required. Specifies name of the password which should be regenerated -- password
2021     or password2. Possible values include: "password", "password2".
2022    :type name: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PasswordName
2023    """
2024
2025    _validation = {
2026        'name': {'required': True},
2027    }
2028
2029    _attribute_map = {
2030        'name': {'key': 'name', 'type': 'str'},
2031    }
2032
2033    def __init__(
2034        self,
2035        **kwargs
2036    ):
2037        super(RegenerateCredentialParameters, self).__init__(**kwargs)
2038        self.name = kwargs['name']
2039
2040
2041class Resource(msrest.serialization.Model):
2042    """An Azure resource.
2043
2044    Variables are only populated by the server, and will be ignored when sending a request.
2045
2046    All required parameters must be populated in order to send to Azure.
2047
2048    :ivar id: The resource ID.
2049    :vartype id: str
2050    :ivar name: The name of the resource.
2051    :vartype name: str
2052    :ivar type: The type of the resource.
2053    :vartype type: str
2054    :param location: Required. The location of the resource. This cannot be changed after the
2055     resource is created.
2056    :type location: str
2057    :param tags: A set of tags. The tags of the resource.
2058    :type tags: dict[str, str]
2059    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
2060    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
2061    """
2062
2063    _validation = {
2064        'id': {'readonly': True},
2065        'name': {'readonly': True},
2066        'type': {'readonly': True},
2067        'location': {'required': True},
2068        'system_data': {'readonly': True},
2069    }
2070
2071    _attribute_map = {
2072        'id': {'key': 'id', 'type': 'str'},
2073        'name': {'key': 'name', 'type': 'str'},
2074        'type': {'key': 'type', 'type': 'str'},
2075        'location': {'key': 'location', 'type': 'str'},
2076        'tags': {'key': 'tags', 'type': '{str}'},
2077        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2078    }
2079
2080    def __init__(
2081        self,
2082        **kwargs
2083    ):
2084        super(Resource, self).__init__(**kwargs)
2085        self.id = None
2086        self.name = None
2087        self.type = None
2088        self.location = kwargs['location']
2089        self.tags = kwargs.get('tags', None)
2090        self.system_data = None
2091
2092
2093class Registry(Resource):
2094    """An object that represents a container registry.
2095
2096    Variables are only populated by the server, and will be ignored when sending a request.
2097
2098    All required parameters must be populated in order to send to Azure.
2099
2100    :ivar id: The resource ID.
2101    :vartype id: str
2102    :ivar name: The name of the resource.
2103    :vartype name: str
2104    :ivar type: The type of the resource.
2105    :vartype type: str
2106    :param location: Required. The location of the resource. This cannot be changed after the
2107     resource is created.
2108    :type location: str
2109    :param tags: A set of tags. The tags of the resource.
2110    :type tags: dict[str, str]
2111    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
2112    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
2113    :param sku: Required. The SKU of the container registry.
2114    :type sku: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Sku
2115    :param identity: The identity of the container registry.
2116    :type identity: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.IdentityProperties
2117    :ivar login_server: The URL that can be used to log into the container registry.
2118    :vartype login_server: str
2119    :ivar creation_date: The creation date of the container registry in ISO8601 format.
2120    :vartype creation_date: ~datetime.datetime
2121    :ivar provisioning_state: The provisioning state of the container registry at the time the
2122     operation was called. Possible values include: "Creating", "Updating", "Deleting", "Succeeded",
2123     "Failed", "Canceled".
2124    :vartype provisioning_state: str or
2125     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
2126    :ivar status: The status of the container registry at the time the operation was called.
2127    :vartype status: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Status
2128    :param admin_user_enabled: The value that indicates whether the admin user is enabled.
2129    :type admin_user_enabled: bool
2130    :param network_rule_set: The network rule set for a container registry.
2131    :type network_rule_set: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.NetworkRuleSet
2132    :param policies: The policies for a container registry.
2133    :type policies: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Policies
2134    :param encryption: The encryption settings of container registry.
2135    :type encryption: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.EncryptionProperty
2136    :param data_endpoint_enabled: Enable a single data endpoint per region for serving data.
2137    :type data_endpoint_enabled: bool
2138    :ivar data_endpoint_host_names: List of host names that will serve data when
2139     dataEndpointEnabled is true.
2140    :vartype data_endpoint_host_names: list[str]
2141    :ivar private_endpoint_connections: List of private endpoint connections for a container
2142     registry.
2143    :vartype private_endpoint_connections:
2144     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.PrivateEndpointConnection]
2145    :param public_network_access: Whether or not public network access is allowed for the container
2146     registry. Possible values include: "Enabled", "Disabled".
2147    :type public_network_access: str or
2148     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PublicNetworkAccess
2149    :param network_rule_bypass_options: Whether to allow trusted Azure services to access a network
2150     restricted registry. Possible values include: "AzureServices", "None".
2151    :type network_rule_bypass_options: str or
2152     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.NetworkRuleBypassOptions
2153    :param zone_redundancy: Whether or not zone redundancy is enabled for this container registry.
2154     Possible values include: "Enabled", "Disabled".
2155    :type zone_redundancy: str or
2156     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ZoneRedundancy
2157    :param anonymous_pull_enabled: Enables registry-wide pull from unauthenticated clients.
2158    :type anonymous_pull_enabled: bool
2159    """
2160
2161    _validation = {
2162        'id': {'readonly': True},
2163        'name': {'readonly': True},
2164        'type': {'readonly': True},
2165        'location': {'required': True},
2166        'system_data': {'readonly': True},
2167        'sku': {'required': True},
2168        'login_server': {'readonly': True},
2169        'creation_date': {'readonly': True},
2170        'provisioning_state': {'readonly': True},
2171        'status': {'readonly': True},
2172        'data_endpoint_host_names': {'readonly': True},
2173        'private_endpoint_connections': {'readonly': True},
2174    }
2175
2176    _attribute_map = {
2177        'id': {'key': 'id', 'type': 'str'},
2178        'name': {'key': 'name', 'type': 'str'},
2179        'type': {'key': 'type', 'type': 'str'},
2180        'location': {'key': 'location', 'type': 'str'},
2181        'tags': {'key': 'tags', 'type': '{str}'},
2182        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2183        'sku': {'key': 'sku', 'type': 'Sku'},
2184        'identity': {'key': 'identity', 'type': 'IdentityProperties'},
2185        'login_server': {'key': 'properties.loginServer', 'type': 'str'},
2186        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
2187        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2188        'status': {'key': 'properties.status', 'type': 'Status'},
2189        'admin_user_enabled': {'key': 'properties.adminUserEnabled', 'type': 'bool'},
2190        'network_rule_set': {'key': 'properties.networkRuleSet', 'type': 'NetworkRuleSet'},
2191        'policies': {'key': 'properties.policies', 'type': 'Policies'},
2192        'encryption': {'key': 'properties.encryption', 'type': 'EncryptionProperty'},
2193        'data_endpoint_enabled': {'key': 'properties.dataEndpointEnabled', 'type': 'bool'},
2194        'data_endpoint_host_names': {'key': 'properties.dataEndpointHostNames', 'type': '[str]'},
2195        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[PrivateEndpointConnection]'},
2196        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
2197        'network_rule_bypass_options': {'key': 'properties.networkRuleBypassOptions', 'type': 'str'},
2198        'zone_redundancy': {'key': 'properties.zoneRedundancy', 'type': 'str'},
2199        'anonymous_pull_enabled': {'key': 'properties.anonymousPullEnabled', 'type': 'bool'},
2200    }
2201
2202    def __init__(
2203        self,
2204        **kwargs
2205    ):
2206        super(Registry, self).__init__(**kwargs)
2207        self.sku = kwargs['sku']
2208        self.identity = kwargs.get('identity', None)
2209        self.login_server = None
2210        self.creation_date = None
2211        self.provisioning_state = None
2212        self.status = None
2213        self.admin_user_enabled = kwargs.get('admin_user_enabled', False)
2214        self.network_rule_set = kwargs.get('network_rule_set', None)
2215        self.policies = kwargs.get('policies', None)
2216        self.encryption = kwargs.get('encryption', None)
2217        self.data_endpoint_enabled = kwargs.get('data_endpoint_enabled', None)
2218        self.data_endpoint_host_names = None
2219        self.private_endpoint_connections = None
2220        self.public_network_access = kwargs.get('public_network_access', None)
2221        self.network_rule_bypass_options = kwargs.get('network_rule_bypass_options', None)
2222        self.zone_redundancy = kwargs.get('zone_redundancy', None)
2223        self.anonymous_pull_enabled = kwargs.get('anonymous_pull_enabled', False)
2224
2225
2226class RegistryListCredentialsResult(msrest.serialization.Model):
2227    """The response from the ListCredentials operation.
2228
2229    :param username: The username for a container registry.
2230    :type username: str
2231    :param passwords: The list of passwords for a container registry.
2232    :type passwords:
2233     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.RegistryPassword]
2234    """
2235
2236    _attribute_map = {
2237        'username': {'key': 'username', 'type': 'str'},
2238        'passwords': {'key': 'passwords', 'type': '[RegistryPassword]'},
2239    }
2240
2241    def __init__(
2242        self,
2243        **kwargs
2244    ):
2245        super(RegistryListCredentialsResult, self).__init__(**kwargs)
2246        self.username = kwargs.get('username', None)
2247        self.passwords = kwargs.get('passwords', None)
2248
2249
2250class RegistryListResult(msrest.serialization.Model):
2251    """The result of a request to list container registries.
2252
2253    :param value: The list of container registries. Since this list may be incomplete, the nextLink
2254     field should be used to request the next list of container registries.
2255    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.Registry]
2256    :param next_link: The URI that can be used to request the next list of container registries.
2257    :type next_link: str
2258    """
2259
2260    _attribute_map = {
2261        'value': {'key': 'value', 'type': '[Registry]'},
2262        'next_link': {'key': 'nextLink', 'type': 'str'},
2263    }
2264
2265    def __init__(
2266        self,
2267        **kwargs
2268    ):
2269        super(RegistryListResult, self).__init__(**kwargs)
2270        self.value = kwargs.get('value', None)
2271        self.next_link = kwargs.get('next_link', None)
2272
2273
2274class RegistryNameCheckRequest(msrest.serialization.Model):
2275    """A request to check whether a container registry name is available.
2276
2277    Variables are only populated by the server, and will be ignored when sending a request.
2278
2279    All required parameters must be populated in order to send to Azure.
2280
2281    :param name: Required. The name of the container registry.
2282    :type name: str
2283    :ivar type: The resource type of the container registry. This field must be set to
2284     'Microsoft.ContainerRegistry/registries'. Has constant value:
2285     "Microsoft.ContainerRegistry/registries".
2286    :vartype type: str
2287    """
2288
2289    _validation = {
2290        'name': {'required': True, 'max_length': 50, 'min_length': 5, 'pattern': r'^[a-zA-Z0-9]*$'},
2291        'type': {'required': True, 'constant': True},
2292    }
2293
2294    _attribute_map = {
2295        'name': {'key': 'name', 'type': 'str'},
2296        'type': {'key': 'type', 'type': 'str'},
2297    }
2298
2299    type = "Microsoft.ContainerRegistry/registries"
2300
2301    def __init__(
2302        self,
2303        **kwargs
2304    ):
2305        super(RegistryNameCheckRequest, self).__init__(**kwargs)
2306        self.name = kwargs['name']
2307
2308
2309class RegistryNameStatus(msrest.serialization.Model):
2310    """The result of a request to check the availability of a container registry name.
2311
2312    :param name_available: The value that indicates whether the name is available.
2313    :type name_available: bool
2314    :param reason: If any, the reason that the name is not available.
2315    :type reason: str
2316    :param message: If any, the error message that provides more detail for the reason that the
2317     name is not available.
2318    :type message: str
2319    """
2320
2321    _attribute_map = {
2322        'name_available': {'key': 'nameAvailable', 'type': 'bool'},
2323        'reason': {'key': 'reason', 'type': 'str'},
2324        'message': {'key': 'message', 'type': 'str'},
2325    }
2326
2327    def __init__(
2328        self,
2329        **kwargs
2330    ):
2331        super(RegistryNameStatus, self).__init__(**kwargs)
2332        self.name_available = kwargs.get('name_available', None)
2333        self.reason = kwargs.get('reason', None)
2334        self.message = kwargs.get('message', None)
2335
2336
2337class RegistryPassword(msrest.serialization.Model):
2338    """The login password for the container registry.
2339
2340    :param name: The password name. Possible values include: "password", "password2".
2341    :type name: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PasswordName
2342    :param value: The password value.
2343    :type value: str
2344    """
2345
2346    _attribute_map = {
2347        'name': {'key': 'name', 'type': 'str'},
2348        'value': {'key': 'value', 'type': 'str'},
2349    }
2350
2351    def __init__(
2352        self,
2353        **kwargs
2354    ):
2355        super(RegistryPassword, self).__init__(**kwargs)
2356        self.name = kwargs.get('name', None)
2357        self.value = kwargs.get('value', None)
2358
2359
2360class RegistryUpdateParameters(msrest.serialization.Model):
2361    """The parameters for updating a container registry.
2362
2363    :param identity: The identity of the container registry.
2364    :type identity: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.IdentityProperties
2365    :param tags: A set of tags. The tags for the container registry.
2366    :type tags: dict[str, str]
2367    :param sku: The SKU of the container registry.
2368    :type sku: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Sku
2369    :param admin_user_enabled: The value that indicates whether the admin user is enabled.
2370    :type admin_user_enabled: bool
2371    :param network_rule_set: The network rule set for a container registry.
2372    :type network_rule_set: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.NetworkRuleSet
2373    :param policies: The policies for a container registry.
2374    :type policies: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Policies
2375    :param encryption: The encryption settings of container registry.
2376    :type encryption: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.EncryptionProperty
2377    :param data_endpoint_enabled: Enable a single data endpoint per region for serving data.
2378    :type data_endpoint_enabled: bool
2379    :param public_network_access: Whether or not public network access is allowed for the container
2380     registry. Possible values include: "Enabled", "Disabled".
2381    :type public_network_access: str or
2382     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PublicNetworkAccess
2383    :param network_rule_bypass_options: Whether to allow trusted Azure services to access a network
2384     restricted registry. Possible values include: "AzureServices", "None".
2385    :type network_rule_bypass_options: str or
2386     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.NetworkRuleBypassOptions
2387    :param anonymous_pull_enabled: Enables registry-wide pull from unauthenticated clients.
2388    :type anonymous_pull_enabled: bool
2389    """
2390
2391    _attribute_map = {
2392        'identity': {'key': 'identity', 'type': 'IdentityProperties'},
2393        'tags': {'key': 'tags', 'type': '{str}'},
2394        'sku': {'key': 'sku', 'type': 'Sku'},
2395        'admin_user_enabled': {'key': 'properties.adminUserEnabled', 'type': 'bool'},
2396        'network_rule_set': {'key': 'properties.networkRuleSet', 'type': 'NetworkRuleSet'},
2397        'policies': {'key': 'properties.policies', 'type': 'Policies'},
2398        'encryption': {'key': 'properties.encryption', 'type': 'EncryptionProperty'},
2399        'data_endpoint_enabled': {'key': 'properties.dataEndpointEnabled', 'type': 'bool'},
2400        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
2401        'network_rule_bypass_options': {'key': 'properties.networkRuleBypassOptions', 'type': 'str'},
2402        'anonymous_pull_enabled': {'key': 'properties.anonymousPullEnabled', 'type': 'bool'},
2403    }
2404
2405    def __init__(
2406        self,
2407        **kwargs
2408    ):
2409        super(RegistryUpdateParameters, self).__init__(**kwargs)
2410        self.identity = kwargs.get('identity', None)
2411        self.tags = kwargs.get('tags', None)
2412        self.sku = kwargs.get('sku', None)
2413        self.admin_user_enabled = kwargs.get('admin_user_enabled', None)
2414        self.network_rule_set = kwargs.get('network_rule_set', None)
2415        self.policies = kwargs.get('policies', None)
2416        self.encryption = kwargs.get('encryption', None)
2417        self.data_endpoint_enabled = kwargs.get('data_endpoint_enabled', None)
2418        self.public_network_access = kwargs.get('public_network_access', None)
2419        self.network_rule_bypass_options = kwargs.get('network_rule_bypass_options', None)
2420        self.anonymous_pull_enabled = kwargs.get('anonymous_pull_enabled', None)
2421
2422
2423class RegistryUsage(msrest.serialization.Model):
2424    """The quota usage for a container registry.
2425
2426    :param name: The name of the usage.
2427    :type name: str
2428    :param limit: The limit of the usage.
2429    :type limit: long
2430    :param current_value: The current value of the usage.
2431    :type current_value: long
2432    :param unit: The unit of measurement. Possible values include: "Count", "Bytes".
2433    :type unit: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.RegistryUsageUnit
2434    """
2435
2436    _attribute_map = {
2437        'name': {'key': 'name', 'type': 'str'},
2438        'limit': {'key': 'limit', 'type': 'long'},
2439        'current_value': {'key': 'currentValue', 'type': 'long'},
2440        'unit': {'key': 'unit', 'type': 'str'},
2441    }
2442
2443    def __init__(
2444        self,
2445        **kwargs
2446    ):
2447        super(RegistryUsage, self).__init__(**kwargs)
2448        self.name = kwargs.get('name', None)
2449        self.limit = kwargs.get('limit', None)
2450        self.current_value = kwargs.get('current_value', None)
2451        self.unit = kwargs.get('unit', None)
2452
2453
2454class RegistryUsageListResult(msrest.serialization.Model):
2455    """The result of a request to get container registry quota usages.
2456
2457    :param value: The list of container registry quota usages.
2458    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.RegistryUsage]
2459    """
2460
2461    _attribute_map = {
2462        'value': {'key': 'value', 'type': '[RegistryUsage]'},
2463    }
2464
2465    def __init__(
2466        self,
2467        **kwargs
2468    ):
2469        super(RegistryUsageListResult, self).__init__(**kwargs)
2470        self.value = kwargs.get('value', None)
2471
2472
2473class Replication(Resource):
2474    """An object that represents a replication for a container registry.
2475
2476    Variables are only populated by the server, and will be ignored when sending a request.
2477
2478    All required parameters must be populated in order to send to Azure.
2479
2480    :ivar id: The resource ID.
2481    :vartype id: str
2482    :ivar name: The name of the resource.
2483    :vartype name: str
2484    :ivar type: The type of the resource.
2485    :vartype type: str
2486    :param location: Required. The location of the resource. This cannot be changed after the
2487     resource is created.
2488    :type location: str
2489    :param tags: A set of tags. The tags of the resource.
2490    :type tags: dict[str, str]
2491    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
2492    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
2493    :ivar provisioning_state: The provisioning state of the replication at the time the operation
2494     was called. Possible values include: "Creating", "Updating", "Deleting", "Succeeded", "Failed",
2495     "Canceled".
2496    :vartype provisioning_state: str or
2497     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
2498    :ivar status: The status of the replication at the time the operation was called.
2499    :vartype status: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Status
2500    :param region_endpoint_enabled: Specifies whether the replication's regional endpoint is
2501     enabled. Requests will not be routed to a replication whose regional endpoint is disabled,
2502     however its data will continue to be synced with other replications.
2503    :type region_endpoint_enabled: bool
2504    :param zone_redundancy: Whether or not zone redundancy is enabled for this container registry
2505     replication. Possible values include: "Enabled", "Disabled".
2506    :type zone_redundancy: str or
2507     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ZoneRedundancy
2508    """
2509
2510    _validation = {
2511        'id': {'readonly': True},
2512        'name': {'readonly': True},
2513        'type': {'readonly': True},
2514        'location': {'required': True},
2515        'system_data': {'readonly': True},
2516        'provisioning_state': {'readonly': True},
2517        'status': {'readonly': True},
2518    }
2519
2520    _attribute_map = {
2521        'id': {'key': 'id', 'type': 'str'},
2522        'name': {'key': 'name', 'type': 'str'},
2523        'type': {'key': 'type', 'type': 'str'},
2524        'location': {'key': 'location', 'type': 'str'},
2525        'tags': {'key': 'tags', 'type': '{str}'},
2526        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2527        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2528        'status': {'key': 'properties.status', 'type': 'Status'},
2529        'region_endpoint_enabled': {'key': 'properties.regionEndpointEnabled', 'type': 'bool'},
2530        'zone_redundancy': {'key': 'properties.zoneRedundancy', 'type': 'str'},
2531    }
2532
2533    def __init__(
2534        self,
2535        **kwargs
2536    ):
2537        super(Replication, self).__init__(**kwargs)
2538        self.provisioning_state = None
2539        self.status = None
2540        self.region_endpoint_enabled = kwargs.get('region_endpoint_enabled', True)
2541        self.zone_redundancy = kwargs.get('zone_redundancy', None)
2542
2543
2544class ReplicationListResult(msrest.serialization.Model):
2545    """The result of a request to list replications for a container registry.
2546
2547    :param value: The list of replications. Since this list may be incomplete, the nextLink field
2548     should be used to request the next list of replications.
2549    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.Replication]
2550    :param next_link: The URI that can be used to request the next list of replications.
2551    :type next_link: str
2552    """
2553
2554    _attribute_map = {
2555        'value': {'key': 'value', 'type': '[Replication]'},
2556        'next_link': {'key': 'nextLink', 'type': 'str'},
2557    }
2558
2559    def __init__(
2560        self,
2561        **kwargs
2562    ):
2563        super(ReplicationListResult, self).__init__(**kwargs)
2564        self.value = kwargs.get('value', None)
2565        self.next_link = kwargs.get('next_link', None)
2566
2567
2568class ReplicationUpdateParameters(msrest.serialization.Model):
2569    """The parameters for updating a replication.
2570
2571    :param tags: A set of tags. The tags for the replication.
2572    :type tags: dict[str, str]
2573    :param region_endpoint_enabled: Specifies whether the replication's regional endpoint is
2574     enabled. Requests will not be routed to a replication whose regional endpoint is disabled,
2575     however its data will continue to be synced with other replications.
2576    :type region_endpoint_enabled: bool
2577    """
2578
2579    _attribute_map = {
2580        'tags': {'key': 'tags', 'type': '{str}'},
2581        'region_endpoint_enabled': {'key': 'properties.regionEndpointEnabled', 'type': 'bool'},
2582    }
2583
2584    def __init__(
2585        self,
2586        **kwargs
2587    ):
2588        super(ReplicationUpdateParameters, self).__init__(**kwargs)
2589        self.tags = kwargs.get('tags', None)
2590        self.region_endpoint_enabled = kwargs.get('region_endpoint_enabled', None)
2591
2592
2593class Request(msrest.serialization.Model):
2594    """The request that generated the event.
2595
2596    :param id: The ID of the request that initiated the event.
2597    :type id: str
2598    :param addr: The IP or hostname and possibly port of the client connection that initiated the
2599     event. This is the RemoteAddr from the standard http request.
2600    :type addr: str
2601    :param host: The externally accessible hostname of the registry instance, as specified by the
2602     http host header on incoming requests.
2603    :type host: str
2604    :param method: The request method that generated the event.
2605    :type method: str
2606    :param useragent: The user agent header of the request.
2607    :type useragent: str
2608    """
2609
2610    _attribute_map = {
2611        'id': {'key': 'id', 'type': 'str'},
2612        'addr': {'key': 'addr', 'type': 'str'},
2613        'host': {'key': 'host', 'type': 'str'},
2614        'method': {'key': 'method', 'type': 'str'},
2615        'useragent': {'key': 'useragent', 'type': 'str'},
2616    }
2617
2618    def __init__(
2619        self,
2620        **kwargs
2621    ):
2622        super(Request, self).__init__(**kwargs)
2623        self.id = kwargs.get('id', None)
2624        self.addr = kwargs.get('addr', None)
2625        self.host = kwargs.get('host', None)
2626        self.method = kwargs.get('method', None)
2627        self.useragent = kwargs.get('useragent', None)
2628
2629
2630class RetentionPolicy(msrest.serialization.Model):
2631    """The retention policy for a container registry.
2632
2633    Variables are only populated by the server, and will be ignored when sending a request.
2634
2635    :param days: The number of days to retain an untagged manifest after which it gets purged.
2636    :type days: int
2637    :ivar last_updated_time: The timestamp when the policy was last updated.
2638    :vartype last_updated_time: ~datetime.datetime
2639    :param status: The value that indicates whether the policy is enabled or not. Possible values
2640     include: "enabled", "disabled".
2641    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PolicyStatus
2642    """
2643
2644    _validation = {
2645        'last_updated_time': {'readonly': True},
2646    }
2647
2648    _attribute_map = {
2649        'days': {'key': 'days', 'type': 'int'},
2650        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'iso-8601'},
2651        'status': {'key': 'status', 'type': 'str'},
2652    }
2653
2654    def __init__(
2655        self,
2656        **kwargs
2657    ):
2658        super(RetentionPolicy, self).__init__(**kwargs)
2659        self.days = kwargs.get('days', 7)
2660        self.last_updated_time = None
2661        self.status = kwargs.get('status', None)
2662
2663
2664class ScopeMap(ProxyResource):
2665    """An object that represents a scope map for a container registry.
2666
2667    Variables are only populated by the server, and will be ignored when sending a request.
2668
2669    :ivar id: The resource ID.
2670    :vartype id: str
2671    :ivar name: The name of the resource.
2672    :vartype name: str
2673    :ivar type: The type of the resource.
2674    :vartype type: str
2675    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
2676    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
2677    :param description: The user friendly description of the scope map.
2678    :type description: str
2679    :ivar type_properties_type: The type of the scope map. E.g. BuildIn scope map.
2680    :vartype type_properties_type: str
2681    :ivar creation_date: The creation date of scope map.
2682    :vartype creation_date: ~datetime.datetime
2683    :ivar provisioning_state: Provisioning state of the resource. Possible values include:
2684     "Creating", "Updating", "Deleting", "Succeeded", "Failed", "Canceled".
2685    :vartype provisioning_state: str or
2686     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
2687    :param actions: The list of scoped permissions for registry artifacts.
2688     E.g. repositories/repository-name/content/read,
2689     repositories/repository-name/metadata/write.
2690    :type actions: list[str]
2691    """
2692
2693    _validation = {
2694        'id': {'readonly': True},
2695        'name': {'readonly': True},
2696        'type': {'readonly': True},
2697        'system_data': {'readonly': True},
2698        'type_properties_type': {'readonly': True},
2699        'creation_date': {'readonly': True},
2700        'provisioning_state': {'readonly': True},
2701    }
2702
2703    _attribute_map = {
2704        'id': {'key': 'id', 'type': 'str'},
2705        'name': {'key': 'name', 'type': 'str'},
2706        'type': {'key': 'type', 'type': 'str'},
2707        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2708        'description': {'key': 'properties.description', 'type': 'str'},
2709        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
2710        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
2711        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2712        'actions': {'key': 'properties.actions', 'type': '[str]'},
2713    }
2714
2715    def __init__(
2716        self,
2717        **kwargs
2718    ):
2719        super(ScopeMap, self).__init__(**kwargs)
2720        self.description = kwargs.get('description', None)
2721        self.type_properties_type = None
2722        self.creation_date = None
2723        self.provisioning_state = None
2724        self.actions = kwargs.get('actions', None)
2725
2726
2727class ScopeMapListResult(msrest.serialization.Model):
2728    """The result of a request to list scope maps for a container registry.
2729
2730    :param value: The list of scope maps. Since this list may be incomplete, the nextLink field
2731     should be used to request the next list of scope maps.
2732    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.ScopeMap]
2733    :param next_link: The URI that can be used to request the next list of scope maps.
2734    :type next_link: str
2735    """
2736
2737    _attribute_map = {
2738        'value': {'key': 'value', 'type': '[ScopeMap]'},
2739        'next_link': {'key': 'nextLink', 'type': 'str'},
2740    }
2741
2742    def __init__(
2743        self,
2744        **kwargs
2745    ):
2746        super(ScopeMapListResult, self).__init__(**kwargs)
2747        self.value = kwargs.get('value', None)
2748        self.next_link = kwargs.get('next_link', None)
2749
2750
2751class ScopeMapUpdateParameters(msrest.serialization.Model):
2752    """The properties for updating the scope map.
2753
2754    :param description: The user friendly description of the scope map.
2755    :type description: str
2756    :param actions: The list of scope permissions for registry artifacts.
2757     E.g. repositories/repository-name/pull,
2758     repositories/repository-name/delete.
2759    :type actions: list[str]
2760    """
2761
2762    _attribute_map = {
2763        'description': {'key': 'properties.description', 'type': 'str'},
2764        'actions': {'key': 'properties.actions', 'type': '[str]'},
2765    }
2766
2767    def __init__(
2768        self,
2769        **kwargs
2770    ):
2771        super(ScopeMapUpdateParameters, self).__init__(**kwargs)
2772        self.description = kwargs.get('description', None)
2773        self.actions = kwargs.get('actions', None)
2774
2775
2776class Sku(msrest.serialization.Model):
2777    """The SKU of a container registry.
2778
2779    Variables are only populated by the server, and will be ignored when sending a request.
2780
2781    All required parameters must be populated in order to send to Azure.
2782
2783    :param name: Required. The SKU name of the container registry. Required for registry creation.
2784     Possible values include: "Classic", "Basic", "Standard", "Premium".
2785    :type name: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SkuName
2786    :ivar tier: The SKU tier based on the SKU name. Possible values include: "Classic", "Basic",
2787     "Standard", "Premium".
2788    :vartype tier: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SkuTier
2789    """
2790
2791    _validation = {
2792        'name': {'required': True},
2793        'tier': {'readonly': True},
2794    }
2795
2796    _attribute_map = {
2797        'name': {'key': 'name', 'type': 'str'},
2798        'tier': {'key': 'tier', 'type': 'str'},
2799    }
2800
2801    def __init__(
2802        self,
2803        **kwargs
2804    ):
2805        super(Sku, self).__init__(**kwargs)
2806        self.name = kwargs['name']
2807        self.tier = None
2808
2809
2810class Source(msrest.serialization.Model):
2811    """The registry node that generated the event. Put differently, while the actor initiates the event, the source generates it.
2812
2813    :param addr: The IP or hostname and the port of the registry node that generated the event.
2814     Generally, this will be resolved by os.Hostname() along with the running port.
2815    :type addr: str
2816    :param instance_id: The running instance of an application. Changes after each restart.
2817    :type instance_id: str
2818    """
2819
2820    _attribute_map = {
2821        'addr': {'key': 'addr', 'type': 'str'},
2822        'instance_id': {'key': 'instanceID', 'type': 'str'},
2823    }
2824
2825    def __init__(
2826        self,
2827        **kwargs
2828    ):
2829        super(Source, self).__init__(**kwargs)
2830        self.addr = kwargs.get('addr', None)
2831        self.instance_id = kwargs.get('instance_id', None)
2832
2833
2834class Status(msrest.serialization.Model):
2835    """The status of an Azure resource at the time the operation was called.
2836
2837    Variables are only populated by the server, and will be ignored when sending a request.
2838
2839    :ivar display_status: The short label for the status.
2840    :vartype display_status: str
2841    :ivar message: The detailed message for the status, including alerts and error messages.
2842    :vartype message: str
2843    :ivar timestamp: The timestamp when the status was changed to the current value.
2844    :vartype timestamp: ~datetime.datetime
2845    """
2846
2847    _validation = {
2848        'display_status': {'readonly': True},
2849        'message': {'readonly': True},
2850        'timestamp': {'readonly': True},
2851    }
2852
2853    _attribute_map = {
2854        'display_status': {'key': 'displayStatus', 'type': 'str'},
2855        'message': {'key': 'message', 'type': 'str'},
2856        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
2857    }
2858
2859    def __init__(
2860        self,
2861        **kwargs
2862    ):
2863        super(Status, self).__init__(**kwargs)
2864        self.display_status = None
2865        self.message = None
2866        self.timestamp = None
2867
2868
2869class StatusDetailProperties(msrest.serialization.Model):
2870    """The status detail properties of the connected registry.
2871
2872    Variables are only populated by the server, and will be ignored when sending a request.
2873
2874    :ivar type: The component of the connected registry corresponding to the status.
2875    :vartype type: str
2876    :ivar code: The code of the status.
2877    :vartype code: str
2878    :ivar description: The description of the status.
2879    :vartype description: str
2880    :ivar timestamp: The timestamp of the status.
2881    :vartype timestamp: ~datetime.datetime
2882    :ivar correlation_id: The correlation ID of the status.
2883    :vartype correlation_id: str
2884    """
2885
2886    _validation = {
2887        'type': {'readonly': True},
2888        'code': {'readonly': True},
2889        'description': {'readonly': True},
2890        'timestamp': {'readonly': True},
2891        'correlation_id': {'readonly': True},
2892    }
2893
2894    _attribute_map = {
2895        'type': {'key': 'type', 'type': 'str'},
2896        'code': {'key': 'code', 'type': 'str'},
2897        'description': {'key': 'description', 'type': 'str'},
2898        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
2899        'correlation_id': {'key': 'correlationId', 'type': 'str'},
2900    }
2901
2902    def __init__(
2903        self,
2904        **kwargs
2905    ):
2906        super(StatusDetailProperties, self).__init__(**kwargs)
2907        self.type = None
2908        self.code = None
2909        self.description = None
2910        self.timestamp = None
2911        self.correlation_id = None
2912
2913
2914class SyncProperties(msrest.serialization.Model):
2915    """The sync properties of the connected registry with its parent.
2916
2917    Variables are only populated by the server, and will be ignored when sending a request.
2918
2919    All required parameters must be populated in order to send to Azure.
2920
2921    :param token_id: Required. The resource ID of the ACR token used to authenticate the connected
2922     registry to its parent during sync.
2923    :type token_id: str
2924    :param schedule: The cron expression indicating the schedule that the connected registry will
2925     sync with its parent.
2926    :type schedule: str
2927    :param sync_window: The time window during which sync is enabled for each schedule occurrence.
2928     Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
2929    :type sync_window: ~datetime.timedelta
2930    :param message_ttl: Required. The period of time for which a message is available to sync
2931     before it is expired. Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per
2932     ISO8601.
2933    :type message_ttl: ~datetime.timedelta
2934    :ivar last_sync_time: The last time a sync occurred between the connected registry and its
2935     parent.
2936    :vartype last_sync_time: ~datetime.datetime
2937    :ivar gateway_endpoint: The gateway endpoint used by the connected registry to communicate with
2938     its parent.
2939    :vartype gateway_endpoint: str
2940    """
2941
2942    _validation = {
2943        'token_id': {'required': True},
2944        'message_ttl': {'required': True},
2945        'last_sync_time': {'readonly': True},
2946        'gateway_endpoint': {'readonly': True},
2947    }
2948
2949    _attribute_map = {
2950        'token_id': {'key': 'tokenId', 'type': 'str'},
2951        'schedule': {'key': 'schedule', 'type': 'str'},
2952        'sync_window': {'key': 'syncWindow', 'type': 'duration'},
2953        'message_ttl': {'key': 'messageTtl', 'type': 'duration'},
2954        'last_sync_time': {'key': 'lastSyncTime', 'type': 'iso-8601'},
2955        'gateway_endpoint': {'key': 'gatewayEndpoint', 'type': 'str'},
2956    }
2957
2958    def __init__(
2959        self,
2960        **kwargs
2961    ):
2962        super(SyncProperties, self).__init__(**kwargs)
2963        self.token_id = kwargs['token_id']
2964        self.schedule = kwargs.get('schedule', None)
2965        self.sync_window = kwargs.get('sync_window', None)
2966        self.message_ttl = kwargs['message_ttl']
2967        self.last_sync_time = None
2968        self.gateway_endpoint = None
2969
2970
2971class SyncUpdateProperties(msrest.serialization.Model):
2972    """The parameters for updating the sync properties of the connected registry with its parent.
2973
2974    :param schedule: The cron expression indicating the schedule that the connected registry will
2975     sync with its parent.
2976    :type schedule: str
2977    :param sync_window: The time window during which sync is enabled for each schedule occurrence.
2978     Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
2979    :type sync_window: ~datetime.timedelta
2980    :param message_ttl: The period of time for which a message is available to sync before it is
2981     expired. Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
2982    :type message_ttl: ~datetime.timedelta
2983    """
2984
2985    _attribute_map = {
2986        'schedule': {'key': 'schedule', 'type': 'str'},
2987        'sync_window': {'key': 'syncWindow', 'type': 'duration'},
2988        'message_ttl': {'key': 'messageTtl', 'type': 'duration'},
2989    }
2990
2991    def __init__(
2992        self,
2993        **kwargs
2994    ):
2995        super(SyncUpdateProperties, self).__init__(**kwargs)
2996        self.schedule = kwargs.get('schedule', None)
2997        self.sync_window = kwargs.get('sync_window', None)
2998        self.message_ttl = kwargs.get('message_ttl', None)
2999
3000
3001class SystemData(msrest.serialization.Model):
3002    """Metadata pertaining to creation and last modification of the resource.
3003
3004    :param created_by: The identity that created the resource.
3005    :type created_by: str
3006    :param created_by_type: The type of identity that created the resource. Possible values
3007     include: "User", "Application", "ManagedIdentity", "Key".
3008    :type created_by_type: str or
3009     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.CreatedByType
3010    :param created_at: The timestamp of resource creation (UTC).
3011    :type created_at: ~datetime.datetime
3012    :param last_modified_by: The identity that last modified the resource.
3013    :type last_modified_by: str
3014    :param last_modified_by_type: The type of identity that last modified the resource. Possible
3015     values include: "User", "Application", "ManagedIdentity", "Key".
3016    :type last_modified_by_type: str or
3017     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.LastModifiedByType
3018    :param last_modified_at: The timestamp of resource modification (UTC).
3019    :type last_modified_at: ~datetime.datetime
3020    """
3021
3022    _attribute_map = {
3023        'created_by': {'key': 'createdBy', 'type': 'str'},
3024        'created_by_type': {'key': 'createdByType', 'type': 'str'},
3025        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
3026        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
3027        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
3028        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
3029    }
3030
3031    def __init__(
3032        self,
3033        **kwargs
3034    ):
3035        super(SystemData, self).__init__(**kwargs)
3036        self.created_by = kwargs.get('created_by', None)
3037        self.created_by_type = kwargs.get('created_by_type', None)
3038        self.created_at = kwargs.get('created_at', None)
3039        self.last_modified_by = kwargs.get('last_modified_by', None)
3040        self.last_modified_by_type = kwargs.get('last_modified_by_type', None)
3041        self.last_modified_at = kwargs.get('last_modified_at', None)
3042
3043
3044class Target(msrest.serialization.Model):
3045    """The target of the event.
3046
3047    :param media_type: The MIME type of the referenced object.
3048    :type media_type: str
3049    :param size: The number of bytes of the content. Same as Length field.
3050    :type size: long
3051    :param digest: The digest of the content, as defined by the Registry V2 HTTP API Specification.
3052    :type digest: str
3053    :param length: The number of bytes of the content. Same as Size field.
3054    :type length: long
3055    :param repository: The repository name.
3056    :type repository: str
3057    :param url: The direct URL to the content.
3058    :type url: str
3059    :param tag: The tag name.
3060    :type tag: str
3061    :param name: The name of the artifact.
3062    :type name: str
3063    :param version: The version of the artifact.
3064    :type version: str
3065    """
3066
3067    _attribute_map = {
3068        'media_type': {'key': 'mediaType', 'type': 'str'},
3069        'size': {'key': 'size', 'type': 'long'},
3070        'digest': {'key': 'digest', 'type': 'str'},
3071        'length': {'key': 'length', 'type': 'long'},
3072        'repository': {'key': 'repository', 'type': 'str'},
3073        'url': {'key': 'url', 'type': 'str'},
3074        'tag': {'key': 'tag', 'type': 'str'},
3075        'name': {'key': 'name', 'type': 'str'},
3076        'version': {'key': 'version', 'type': 'str'},
3077    }
3078
3079    def __init__(
3080        self,
3081        **kwargs
3082    ):
3083        super(Target, self).__init__(**kwargs)
3084        self.media_type = kwargs.get('media_type', None)
3085        self.size = kwargs.get('size', None)
3086        self.digest = kwargs.get('digest', None)
3087        self.length = kwargs.get('length', None)
3088        self.repository = kwargs.get('repository', None)
3089        self.url = kwargs.get('url', None)
3090        self.tag = kwargs.get('tag', None)
3091        self.name = kwargs.get('name', None)
3092        self.version = kwargs.get('version', None)
3093
3094
3095class TlsCertificateProperties(msrest.serialization.Model):
3096    """The TLS certificate properties of the connected registry login server.
3097
3098    Variables are only populated by the server, and will be ignored when sending a request.
3099
3100    :ivar type: The type of certificate location. Possible values include: "LocalDirectory".
3101    :vartype type: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.CertificateType
3102    :ivar location: Indicates the location of the certificates.
3103    :vartype location: str
3104    """
3105
3106    _validation = {
3107        'type': {'readonly': True},
3108        'location': {'readonly': True},
3109    }
3110
3111    _attribute_map = {
3112        'type': {'key': 'type', 'type': 'str'},
3113        'location': {'key': 'location', 'type': 'str'},
3114    }
3115
3116    def __init__(
3117        self,
3118        **kwargs
3119    ):
3120        super(TlsCertificateProperties, self).__init__(**kwargs)
3121        self.type = None
3122        self.location = None
3123
3124
3125class TlsProperties(msrest.serialization.Model):
3126    """The TLS properties of the connected registry login server.
3127
3128    Variables are only populated by the server, and will be ignored when sending a request.
3129
3130    :ivar status: Indicates whether HTTPS is enabled for the login server. Possible values include:
3131     "Enabled", "Disabled".
3132    :vartype status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TlsStatus
3133    :ivar certificate: The certificate used to configure HTTPS for the login server.
3134    :vartype certificate:
3135     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TlsCertificateProperties
3136    """
3137
3138    _validation = {
3139        'status': {'readonly': True},
3140        'certificate': {'readonly': True},
3141    }
3142
3143    _attribute_map = {
3144        'status': {'key': 'status', 'type': 'str'},
3145        'certificate': {'key': 'certificate', 'type': 'TlsCertificateProperties'},
3146    }
3147
3148    def __init__(
3149        self,
3150        **kwargs
3151    ):
3152        super(TlsProperties, self).__init__(**kwargs)
3153        self.status = None
3154        self.certificate = None
3155
3156
3157class Token(ProxyResource):
3158    """An object that represents a token for a container registry.
3159
3160    Variables are only populated by the server, and will be ignored when sending a request.
3161
3162    :ivar id: The resource ID.
3163    :vartype id: str
3164    :ivar name: The name of the resource.
3165    :vartype name: str
3166    :ivar type: The type of the resource.
3167    :vartype type: str
3168    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
3169    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
3170    :ivar creation_date: The creation date of scope map.
3171    :vartype creation_date: ~datetime.datetime
3172    :ivar provisioning_state: Provisioning state of the resource. Possible values include:
3173     "Creating", "Updating", "Deleting", "Succeeded", "Failed", "Canceled".
3174    :vartype provisioning_state: str or
3175     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
3176    :param scope_map_id: The resource ID of the scope map to which the token will be associated
3177     with.
3178    :type scope_map_id: str
3179    :param credentials: The credentials that can be used for authenticating the token.
3180    :type credentials:
3181     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenCredentialsProperties
3182    :param status: The status of the token example enabled or disabled. Possible values include:
3183     "enabled", "disabled".
3184    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenStatus
3185    """
3186
3187    _validation = {
3188        'id': {'readonly': True},
3189        'name': {'readonly': True},
3190        'type': {'readonly': True},
3191        'system_data': {'readonly': True},
3192        'creation_date': {'readonly': True},
3193        'provisioning_state': {'readonly': True},
3194    }
3195
3196    _attribute_map = {
3197        'id': {'key': 'id', 'type': 'str'},
3198        'name': {'key': 'name', 'type': 'str'},
3199        'type': {'key': 'type', 'type': 'str'},
3200        'system_data': {'key': 'systemData', 'type': 'SystemData'},
3201        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
3202        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3203        'scope_map_id': {'key': 'properties.scopeMapId', 'type': 'str'},
3204        'credentials': {'key': 'properties.credentials', 'type': 'TokenCredentialsProperties'},
3205        'status': {'key': 'properties.status', 'type': 'str'},
3206    }
3207
3208    def __init__(
3209        self,
3210        **kwargs
3211    ):
3212        super(Token, self).__init__(**kwargs)
3213        self.creation_date = None
3214        self.provisioning_state = None
3215        self.scope_map_id = kwargs.get('scope_map_id', None)
3216        self.credentials = kwargs.get('credentials', None)
3217        self.status = kwargs.get('status', None)
3218
3219
3220class TokenCertificate(msrest.serialization.Model):
3221    """The properties of a certificate used for authenticating a token.
3222
3223    :param name:  Possible values include: "certificate1", "certificate2".
3224    :type name: str or
3225     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenCertificateName
3226    :param expiry: The expiry datetime of the certificate.
3227    :type expiry: ~datetime.datetime
3228    :param thumbprint: The thumbprint of the certificate.
3229    :type thumbprint: str
3230    :param encoded_pem_certificate: Base 64 encoded string of the public certificate1 in PEM format
3231     that will be used for authenticating the token.
3232    :type encoded_pem_certificate: str
3233    """
3234
3235    _attribute_map = {
3236        'name': {'key': 'name', 'type': 'str'},
3237        'expiry': {'key': 'expiry', 'type': 'iso-8601'},
3238        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
3239        'encoded_pem_certificate': {'key': 'encodedPemCertificate', 'type': 'str'},
3240    }
3241
3242    def __init__(
3243        self,
3244        **kwargs
3245    ):
3246        super(TokenCertificate, self).__init__(**kwargs)
3247        self.name = kwargs.get('name', None)
3248        self.expiry = kwargs.get('expiry', None)
3249        self.thumbprint = kwargs.get('thumbprint', None)
3250        self.encoded_pem_certificate = kwargs.get('encoded_pem_certificate', None)
3251
3252
3253class TokenCredentialsProperties(msrest.serialization.Model):
3254    """The properties of the credentials that can be used for authenticating the token.
3255
3256    :param certificates:
3257    :type certificates:
3258     list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenCertificate]
3259    :param passwords:
3260    :type passwords: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenPassword]
3261    """
3262
3263    _attribute_map = {
3264        'certificates': {'key': 'certificates', 'type': '[TokenCertificate]'},
3265        'passwords': {'key': 'passwords', 'type': '[TokenPassword]'},
3266    }
3267
3268    def __init__(
3269        self,
3270        **kwargs
3271    ):
3272        super(TokenCredentialsProperties, self).__init__(**kwargs)
3273        self.certificates = kwargs.get('certificates', None)
3274        self.passwords = kwargs.get('passwords', None)
3275
3276
3277class TokenListResult(msrest.serialization.Model):
3278    """The result of a request to list tokens for a container registry.
3279
3280    :param value: The list of tokens. Since this list may be incomplete, the nextLink field should
3281     be used to request the next list of tokens.
3282    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.Token]
3283    :param next_link: The URI that can be used to request the next list of tokens.
3284    :type next_link: str
3285    """
3286
3287    _attribute_map = {
3288        'value': {'key': 'value', 'type': '[Token]'},
3289        'next_link': {'key': 'nextLink', 'type': 'str'},
3290    }
3291
3292    def __init__(
3293        self,
3294        **kwargs
3295    ):
3296        super(TokenListResult, self).__init__(**kwargs)
3297        self.value = kwargs.get('value', None)
3298        self.next_link = kwargs.get('next_link', None)
3299
3300
3301class TokenPassword(msrest.serialization.Model):
3302    """The password that will be used for authenticating the token of a container registry.
3303
3304    Variables are only populated by the server, and will be ignored when sending a request.
3305
3306    :param creation_time: The creation datetime of the password.
3307    :type creation_time: ~datetime.datetime
3308    :param expiry: The expiry datetime of the password.
3309    :type expiry: ~datetime.datetime
3310    :param name: The password name "password1" or "password2". Possible values include:
3311     "password1", "password2".
3312    :type name: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenPasswordName
3313    :ivar value: The password value.
3314    :vartype value: str
3315    """
3316
3317    _validation = {
3318        'value': {'readonly': True},
3319    }
3320
3321    _attribute_map = {
3322        'creation_time': {'key': 'creationTime', 'type': 'iso-8601'},
3323        'expiry': {'key': 'expiry', 'type': 'iso-8601'},
3324        'name': {'key': 'name', 'type': 'str'},
3325        'value': {'key': 'value', 'type': 'str'},
3326    }
3327
3328    def __init__(
3329        self,
3330        **kwargs
3331    ):
3332        super(TokenPassword, self).__init__(**kwargs)
3333        self.creation_time = kwargs.get('creation_time', None)
3334        self.expiry = kwargs.get('expiry', None)
3335        self.name = kwargs.get('name', None)
3336        self.value = None
3337
3338
3339class TokenUpdateParameters(msrest.serialization.Model):
3340    """The parameters for updating a token.
3341
3342    :param scope_map_id: The resource ID of the scope map to which the token will be associated
3343     with.
3344    :type scope_map_id: str
3345    :param status: The status of the token example enabled or disabled. Possible values include:
3346     "enabled", "disabled".
3347    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenStatus
3348    :param credentials: The credentials that can be used for authenticating the token.
3349    :type credentials:
3350     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TokenCredentialsProperties
3351    """
3352
3353    _attribute_map = {
3354        'scope_map_id': {'key': 'properties.scopeMapId', 'type': 'str'},
3355        'status': {'key': 'properties.status', 'type': 'str'},
3356        'credentials': {'key': 'properties.credentials', 'type': 'TokenCredentialsProperties'},
3357    }
3358
3359    def __init__(
3360        self,
3361        **kwargs
3362    ):
3363        super(TokenUpdateParameters, self).__init__(**kwargs)
3364        self.scope_map_id = kwargs.get('scope_map_id', None)
3365        self.status = kwargs.get('status', None)
3366        self.credentials = kwargs.get('credentials', None)
3367
3368
3369class TrustPolicy(msrest.serialization.Model):
3370    """The content trust policy for a container registry.
3371
3372    :param type: The type of trust policy. Possible values include: "Notary". Default value:
3373     "Notary".
3374    :type type: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.TrustPolicyType
3375    :param status: The value that indicates whether the policy is enabled or not. Possible values
3376     include: "enabled", "disabled".
3377    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.PolicyStatus
3378    """
3379
3380    _attribute_map = {
3381        'type': {'key': 'type', 'type': 'str'},
3382        'status': {'key': 'status', 'type': 'str'},
3383    }
3384
3385    def __init__(
3386        self,
3387        **kwargs
3388    ):
3389        super(TrustPolicy, self).__init__(**kwargs)
3390        self.type = kwargs.get('type', "Notary")
3391        self.status = kwargs.get('status', None)
3392
3393
3394class UserIdentityProperties(msrest.serialization.Model):
3395    """UserIdentityProperties.
3396
3397    :param principal_id: The principal id of user assigned identity.
3398    :type principal_id: str
3399    :param client_id: The client id of user assigned identity.
3400    :type client_id: str
3401    """
3402
3403    _attribute_map = {
3404        'principal_id': {'key': 'principalId', 'type': 'str'},
3405        'client_id': {'key': 'clientId', 'type': 'str'},
3406    }
3407
3408    def __init__(
3409        self,
3410        **kwargs
3411    ):
3412        super(UserIdentityProperties, self).__init__(**kwargs)
3413        self.principal_id = kwargs.get('principal_id', None)
3414        self.client_id = kwargs.get('client_id', None)
3415
3416
3417class VirtualNetworkRule(msrest.serialization.Model):
3418    """Virtual network rule.
3419
3420    All required parameters must be populated in order to send to Azure.
3421
3422    :param action: The action of virtual network rule. Possible values include: "Allow".
3423    :type action: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.Action
3424    :param virtual_network_resource_id: Required. Resource ID of a subnet, for example:
3425     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
3426    :type virtual_network_resource_id: str
3427    """
3428
3429    _validation = {
3430        'virtual_network_resource_id': {'required': True},
3431    }
3432
3433    _attribute_map = {
3434        'action': {'key': 'action', 'type': 'str'},
3435        'virtual_network_resource_id': {'key': 'id', 'type': 'str'},
3436    }
3437
3438    def __init__(
3439        self,
3440        **kwargs
3441    ):
3442        super(VirtualNetworkRule, self).__init__(**kwargs)
3443        self.action = kwargs.get('action', None)
3444        self.virtual_network_resource_id = kwargs['virtual_network_resource_id']
3445
3446
3447class Webhook(Resource):
3448    """An object that represents a webhook for a container registry.
3449
3450    Variables are only populated by the server, and will be ignored when sending a request.
3451
3452    All required parameters must be populated in order to send to Azure.
3453
3454    :ivar id: The resource ID.
3455    :vartype id: str
3456    :ivar name: The name of the resource.
3457    :vartype name: str
3458    :ivar type: The type of the resource.
3459    :vartype type: str
3460    :param location: Required. The location of the resource. This cannot be changed after the
3461     resource is created.
3462    :type location: str
3463    :param tags: A set of tags. The tags of the resource.
3464    :type tags: dict[str, str]
3465    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
3466    :vartype system_data: ~azure.mgmt.containerregistry.v2020_11_01_preview.models.SystemData
3467    :param status: The status of the webhook at the time the operation was called. Possible values
3468     include: "enabled", "disabled".
3469    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.WebhookStatus
3470    :param scope: The scope of repositories where the event can be triggered. For example, 'foo:*'
3471     means events for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only.
3472     'foo' is equivalent to 'foo:latest'. Empty means all events.
3473    :type scope: str
3474    :param actions: The list of actions that trigger the webhook to post notifications.
3475    :type actions: list[str or
3476     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.WebhookAction]
3477    :ivar provisioning_state: The provisioning state of the webhook at the time the operation was
3478     called. Possible values include: "Creating", "Updating", "Deleting", "Succeeded", "Failed",
3479     "Canceled".
3480    :vartype provisioning_state: str or
3481     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.ProvisioningState
3482    """
3483
3484    _validation = {
3485        'id': {'readonly': True},
3486        'name': {'readonly': True},
3487        'type': {'readonly': True},
3488        'location': {'required': True},
3489        'system_data': {'readonly': True},
3490        'provisioning_state': {'readonly': True},
3491    }
3492
3493    _attribute_map = {
3494        'id': {'key': 'id', 'type': 'str'},
3495        'name': {'key': 'name', 'type': 'str'},
3496        'type': {'key': 'type', 'type': 'str'},
3497        'location': {'key': 'location', 'type': 'str'},
3498        'tags': {'key': 'tags', 'type': '{str}'},
3499        'system_data': {'key': 'systemData', 'type': 'SystemData'},
3500        'status': {'key': 'properties.status', 'type': 'str'},
3501        'scope': {'key': 'properties.scope', 'type': 'str'},
3502        'actions': {'key': 'properties.actions', 'type': '[str]'},
3503        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3504    }
3505
3506    def __init__(
3507        self,
3508        **kwargs
3509    ):
3510        super(Webhook, self).__init__(**kwargs)
3511        self.status = kwargs.get('status', None)
3512        self.scope = kwargs.get('scope', None)
3513        self.actions = kwargs.get('actions', None)
3514        self.provisioning_state = None
3515
3516
3517class WebhookCreateParameters(msrest.serialization.Model):
3518    """The parameters for creating a webhook.
3519
3520    All required parameters must be populated in order to send to Azure.
3521
3522    :param tags: A set of tags. The tags for the webhook.
3523    :type tags: dict[str, str]
3524    :param location: Required. The location of the webhook. This cannot be changed after the
3525     resource is created.
3526    :type location: str
3527    :param service_uri: The service URI for the webhook to post notifications.
3528    :type service_uri: str
3529    :param custom_headers: Custom headers that will be added to the webhook notifications.
3530    :type custom_headers: dict[str, str]
3531    :param status: The status of the webhook at the time the operation was called. Possible values
3532     include: "enabled", "disabled".
3533    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.WebhookStatus
3534    :param scope: The scope of repositories where the event can be triggered. For example, 'foo:*'
3535     means events for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only.
3536     'foo' is equivalent to 'foo:latest'. Empty means all events.
3537    :type scope: str
3538    :param actions: The list of actions that trigger the webhook to post notifications.
3539    :type actions: list[str or
3540     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.WebhookAction]
3541    """
3542
3543    _validation = {
3544        'location': {'required': True},
3545    }
3546
3547    _attribute_map = {
3548        'tags': {'key': 'tags', 'type': '{str}'},
3549        'location': {'key': 'location', 'type': 'str'},
3550        'service_uri': {'key': 'properties.serviceUri', 'type': 'str'},
3551        'custom_headers': {'key': 'properties.customHeaders', 'type': '{str}'},
3552        'status': {'key': 'properties.status', 'type': 'str'},
3553        'scope': {'key': 'properties.scope', 'type': 'str'},
3554        'actions': {'key': 'properties.actions', 'type': '[str]'},
3555    }
3556
3557    def __init__(
3558        self,
3559        **kwargs
3560    ):
3561        super(WebhookCreateParameters, self).__init__(**kwargs)
3562        self.tags = kwargs.get('tags', None)
3563        self.location = kwargs['location']
3564        self.service_uri = kwargs.get('service_uri', None)
3565        self.custom_headers = kwargs.get('custom_headers', None)
3566        self.status = kwargs.get('status', None)
3567        self.scope = kwargs.get('scope', None)
3568        self.actions = kwargs.get('actions', None)
3569
3570
3571class WebhookListResult(msrest.serialization.Model):
3572    """The result of a request to list webhooks for a container registry.
3573
3574    :param value: The list of webhooks. Since this list may be incomplete, the nextLink field
3575     should be used to request the next list of webhooks.
3576    :type value: list[~azure.mgmt.containerregistry.v2020_11_01_preview.models.Webhook]
3577    :param next_link: The URI that can be used to request the next list of webhooks.
3578    :type next_link: str
3579    """
3580
3581    _attribute_map = {
3582        'value': {'key': 'value', 'type': '[Webhook]'},
3583        'next_link': {'key': 'nextLink', 'type': 'str'},
3584    }
3585
3586    def __init__(
3587        self,
3588        **kwargs
3589    ):
3590        super(WebhookListResult, self).__init__(**kwargs)
3591        self.value = kwargs.get('value', None)
3592        self.next_link = kwargs.get('next_link', None)
3593
3594
3595class WebhookUpdateParameters(msrest.serialization.Model):
3596    """The parameters for updating a webhook.
3597
3598    :param tags: A set of tags. The tags for the webhook.
3599    :type tags: dict[str, str]
3600    :param service_uri: The service URI for the webhook to post notifications.
3601    :type service_uri: str
3602    :param custom_headers: Custom headers that will be added to the webhook notifications.
3603    :type custom_headers: dict[str, str]
3604    :param status: The status of the webhook at the time the operation was called. Possible values
3605     include: "enabled", "disabled".
3606    :type status: str or ~azure.mgmt.containerregistry.v2020_11_01_preview.models.WebhookStatus
3607    :param scope: The scope of repositories where the event can be triggered. For example, 'foo:*'
3608     means events for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only.
3609     'foo' is equivalent to 'foo:latest'. Empty means all events.
3610    :type scope: str
3611    :param actions: The list of actions that trigger the webhook to post notifications.
3612    :type actions: list[str or
3613     ~azure.mgmt.containerregistry.v2020_11_01_preview.models.WebhookAction]
3614    """
3615
3616    _attribute_map = {
3617        'tags': {'key': 'tags', 'type': '{str}'},
3618        'service_uri': {'key': 'properties.serviceUri', 'type': 'str'},
3619        'custom_headers': {'key': 'properties.customHeaders', 'type': '{str}'},
3620        'status': {'key': 'properties.status', 'type': 'str'},
3621        'scope': {'key': 'properties.scope', 'type': 'str'},
3622        'actions': {'key': 'properties.actions', 'type': '[str]'},
3623    }
3624
3625    def __init__(
3626        self,
3627        **kwargs
3628    ):
3629        super(WebhookUpdateParameters, self).__init__(**kwargs)
3630        self.tags = kwargs.get('tags', None)
3631        self.service_uri = kwargs.get('service_uri', None)
3632        self.custom_headers = kwargs.get('custom_headers', None)
3633        self.status = kwargs.get('status', None)
3634        self.scope = kwargs.get('scope', None)
3635        self.actions = kwargs.get('actions', None)
3636