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 Resource(msrest.serialization.Model):
14    """Common fields that are returned in the response for all Azure Resource Manager resources.
15
16    Variables are only populated by the server, and will be ignored when sending a request.
17
18    :ivar id: Fully qualified resource ID for the resource. Ex -
19     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
20    :vartype id: str
21    :ivar name: The name of the resource.
22    :vartype name: str
23    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
24     "Microsoft.Storage/storageAccounts".
25    :vartype type: str
26    """
27
28    _validation = {
29        'id': {'readonly': True},
30        'name': {'readonly': True},
31        'type': {'readonly': True},
32    }
33
34    _attribute_map = {
35        'id': {'key': 'id', 'type': 'str'},
36        'name': {'key': 'name', 'type': 'str'},
37        'type': {'key': 'type', 'type': 'str'},
38    }
39
40    def __init__(
41        self,
42        **kwargs
43    ):
44        super(Resource, self).__init__(**kwargs)
45        self.id = None
46        self.name = None
47        self.type = None
48
49
50class ProxyResource(Resource):
51    """The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location.
52
53    Variables are only populated by the server, and will be ignored when sending a request.
54
55    :ivar id: Fully qualified resource ID for the resource. Ex -
56     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
57    :vartype id: str
58    :ivar name: The name of the resource.
59    :vartype name: str
60    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
61     "Microsoft.Storage/storageAccounts".
62    :vartype type: str
63    """
64
65    _validation = {
66        'id': {'readonly': True},
67        'name': {'readonly': True},
68        'type': {'readonly': True},
69    }
70
71    _attribute_map = {
72        'id': {'key': 'id', 'type': 'str'},
73        'name': {'key': 'name', 'type': 'str'},
74        'type': {'key': 'type', 'type': 'str'},
75    }
76
77    def __init__(
78        self,
79        **kwargs
80    ):
81        super(ProxyResource, self).__init__(**kwargs)
82
83
84class Advisor(ProxyResource):
85    """Represents a recommendation action advisor.
86
87    Variables are only populated by the server, and will be ignored when sending a request.
88
89    :ivar id: Fully qualified resource ID for the resource. Ex -
90     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
91    :vartype id: str
92    :ivar name: The name of the resource.
93    :vartype name: str
94    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
95     "Microsoft.Storage/storageAccounts".
96    :vartype type: str
97    :param properties: The properties of a recommendation action advisor.
98    :type properties: any
99    """
100
101    _validation = {
102        'id': {'readonly': True},
103        'name': {'readonly': True},
104        'type': {'readonly': True},
105    }
106
107    _attribute_map = {
108        'id': {'key': 'id', 'type': 'str'},
109        'name': {'key': 'name', 'type': 'str'},
110        'type': {'key': 'type', 'type': 'str'},
111        'properties': {'key': 'properties', 'type': 'object'},
112    }
113
114    def __init__(
115        self,
116        **kwargs
117    ):
118        super(Advisor, self).__init__(**kwargs)
119        self.properties = kwargs.get('properties', None)
120
121
122class AdvisorsResultList(msrest.serialization.Model):
123    """A list of query statistics.
124
125    Variables are only populated by the server, and will be ignored when sending a request.
126
127    :ivar value: The list of recommendation action advisors.
128    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.Advisor]
129    :ivar next_link: Link to retrieve next page of results.
130    :vartype next_link: str
131    """
132
133    _validation = {
134        'value': {'readonly': True},
135        'next_link': {'readonly': True},
136    }
137
138    _attribute_map = {
139        'value': {'key': 'value', 'type': '[Advisor]'},
140        'next_link': {'key': 'nextLink', 'type': 'str'},
141    }
142
143    def __init__(
144        self,
145        **kwargs
146    ):
147        super(AdvisorsResultList, self).__init__(**kwargs)
148        self.value = None
149        self.next_link = None
150
151
152class CloudErrorAutoGenerated(msrest.serialization.Model):
153    """An error response from the Batch service.
154
155    :param error: Error message.
156    :type error: ~azure.mgmt.rdbms.mariadb.models.ErrorResponse
157    """
158
159    _attribute_map = {
160        'error': {'key': 'error', 'type': 'ErrorResponse'},
161    }
162
163    def __init__(
164        self,
165        **kwargs
166    ):
167        super(CloudErrorAutoGenerated, self).__init__(**kwargs)
168        self.error = kwargs.get('error', None)
169
170
171class Configuration(ProxyResource):
172    """Represents a Configuration.
173
174    Variables are only populated by the server, and will be ignored when sending a request.
175
176    :ivar id: Fully qualified resource ID for the resource. Ex -
177     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
178    :vartype id: str
179    :ivar name: The name of the resource.
180    :vartype name: str
181    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
182     "Microsoft.Storage/storageAccounts".
183    :vartype type: str
184    :param value: Value of the configuration.
185    :type value: str
186    :ivar description: Description of the configuration.
187    :vartype description: str
188    :ivar default_value: Default value of the configuration.
189    :vartype default_value: str
190    :ivar data_type: Data type of the configuration.
191    :vartype data_type: str
192    :ivar allowed_values: Allowed values of the configuration.
193    :vartype allowed_values: str
194    :param source: Source of the configuration.
195    :type source: str
196    """
197
198    _validation = {
199        'id': {'readonly': True},
200        'name': {'readonly': True},
201        'type': {'readonly': True},
202        'description': {'readonly': True},
203        'default_value': {'readonly': True},
204        'data_type': {'readonly': True},
205        'allowed_values': {'readonly': True},
206    }
207
208    _attribute_map = {
209        'id': {'key': 'id', 'type': 'str'},
210        'name': {'key': 'name', 'type': 'str'},
211        'type': {'key': 'type', 'type': 'str'},
212        'value': {'key': 'properties.value', 'type': 'str'},
213        'description': {'key': 'properties.description', 'type': 'str'},
214        'default_value': {'key': 'properties.defaultValue', 'type': 'str'},
215        'data_type': {'key': 'properties.dataType', 'type': 'str'},
216        'allowed_values': {'key': 'properties.allowedValues', 'type': 'str'},
217        'source': {'key': 'properties.source', 'type': 'str'},
218    }
219
220    def __init__(
221        self,
222        **kwargs
223    ):
224        super(Configuration, self).__init__(**kwargs)
225        self.value = kwargs.get('value', None)
226        self.description = None
227        self.default_value = None
228        self.data_type = None
229        self.allowed_values = None
230        self.source = kwargs.get('source', None)
231
232
233class ConfigurationListResult(msrest.serialization.Model):
234    """A list of server configurations.
235
236    :param value: The list of server configurations.
237    :type value: list[~azure.mgmt.rdbms.mariadb.models.Configuration]
238    """
239
240    _attribute_map = {
241        'value': {'key': 'value', 'type': '[Configuration]'},
242    }
243
244    def __init__(
245        self,
246        **kwargs
247    ):
248        super(ConfigurationListResult, self).__init__(**kwargs)
249        self.value = kwargs.get('value', None)
250
251
252class Database(ProxyResource):
253    """Represents a Database.
254
255    Variables are only populated by the server, and will be ignored when sending a request.
256
257    :ivar id: Fully qualified resource ID for the resource. Ex -
258     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
259    :vartype id: str
260    :ivar name: The name of the resource.
261    :vartype name: str
262    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
263     "Microsoft.Storage/storageAccounts".
264    :vartype type: str
265    :param charset: The charset of the database.
266    :type charset: str
267    :param collation: The collation of the database.
268    :type collation: str
269    """
270
271    _validation = {
272        'id': {'readonly': True},
273        'name': {'readonly': True},
274        'type': {'readonly': True},
275    }
276
277    _attribute_map = {
278        'id': {'key': 'id', 'type': 'str'},
279        'name': {'key': 'name', 'type': 'str'},
280        'type': {'key': 'type', 'type': 'str'},
281        'charset': {'key': 'properties.charset', 'type': 'str'},
282        'collation': {'key': 'properties.collation', 'type': 'str'},
283    }
284
285    def __init__(
286        self,
287        **kwargs
288    ):
289        super(Database, self).__init__(**kwargs)
290        self.charset = kwargs.get('charset', None)
291        self.collation = kwargs.get('collation', None)
292
293
294class DatabaseListResult(msrest.serialization.Model):
295    """A List of databases.
296
297    :param value: The list of databases housed in a server.
298    :type value: list[~azure.mgmt.rdbms.mariadb.models.Database]
299    """
300
301    _attribute_map = {
302        'value': {'key': 'value', 'type': '[Database]'},
303    }
304
305    def __init__(
306        self,
307        **kwargs
308    ):
309        super(DatabaseListResult, self).__init__(**kwargs)
310        self.value = kwargs.get('value', None)
311
312
313class ErrorAdditionalInfo(msrest.serialization.Model):
314    """The resource management error additional info.
315
316    Variables are only populated by the server, and will be ignored when sending a request.
317
318    :ivar type: The additional info type.
319    :vartype type: str
320    :ivar info: The additional info.
321    :vartype info: any
322    """
323
324    _validation = {
325        'type': {'readonly': True},
326        'info': {'readonly': True},
327    }
328
329    _attribute_map = {
330        'type': {'key': 'type', 'type': 'str'},
331        'info': {'key': 'info', 'type': 'object'},
332    }
333
334    def __init__(
335        self,
336        **kwargs
337    ):
338        super(ErrorAdditionalInfo, self).__init__(**kwargs)
339        self.type = None
340        self.info = None
341
342
343class ErrorResponse(msrest.serialization.Model):
344    """Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.).
345
346    Variables are only populated by the server, and will be ignored when sending a request.
347
348    :ivar code: The error code.
349    :vartype code: str
350    :ivar message: The error message.
351    :vartype message: str
352    :ivar target: The error target.
353    :vartype target: str
354    :ivar details: The error details.
355    :vartype details: list[~azure.mgmt.rdbms.mariadb.models.ErrorResponse]
356    :ivar additional_info: The error additional info.
357    :vartype additional_info: list[~azure.mgmt.rdbms.mariadb.models.ErrorAdditionalInfo]
358    """
359
360    _validation = {
361        'code': {'readonly': True},
362        'message': {'readonly': True},
363        'target': {'readonly': True},
364        'details': {'readonly': True},
365        'additional_info': {'readonly': 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': '[ErrorResponse]'},
373        'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
374    }
375
376    def __init__(
377        self,
378        **kwargs
379    ):
380        super(ErrorResponse, self).__init__(**kwargs)
381        self.code = None
382        self.message = None
383        self.target = None
384        self.details = None
385        self.additional_info = None
386
387
388class FirewallRule(ProxyResource):
389    """Represents a server firewall rule.
390
391    Variables are only populated by the server, and will be ignored when sending a request.
392
393    All required parameters must be populated in order to send to Azure.
394
395    :ivar id: Fully qualified resource ID for the resource. Ex -
396     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
397    :vartype id: str
398    :ivar name: The name of the resource.
399    :vartype name: str
400    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
401     "Microsoft.Storage/storageAccounts".
402    :vartype type: str
403    :param start_ip_address: Required. The start IP address of the server firewall rule. Must be
404     IPv4 format.
405    :type start_ip_address: str
406    :param end_ip_address: Required. The end IP address of the server firewall rule. Must be IPv4
407     format.
408    :type end_ip_address: str
409    """
410
411    _validation = {
412        'id': {'readonly': True},
413        'name': {'readonly': True},
414        'type': {'readonly': True},
415        'start_ip_address': {'required': True, 'pattern': r'^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'},
416        'end_ip_address': {'required': True, 'pattern': r'^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'},
417    }
418
419    _attribute_map = {
420        'id': {'key': 'id', 'type': 'str'},
421        'name': {'key': 'name', 'type': 'str'},
422        'type': {'key': 'type', 'type': 'str'},
423        'start_ip_address': {'key': 'properties.startIpAddress', 'type': 'str'},
424        'end_ip_address': {'key': 'properties.endIpAddress', 'type': 'str'},
425    }
426
427    def __init__(
428        self,
429        **kwargs
430    ):
431        super(FirewallRule, self).__init__(**kwargs)
432        self.start_ip_address = kwargs['start_ip_address']
433        self.end_ip_address = kwargs['end_ip_address']
434
435
436class FirewallRuleListResult(msrest.serialization.Model):
437    """A list of firewall rules.
438
439    :param value: The list of firewall rules in a server.
440    :type value: list[~azure.mgmt.rdbms.mariadb.models.FirewallRule]
441    """
442
443    _attribute_map = {
444        'value': {'key': 'value', 'type': '[FirewallRule]'},
445    }
446
447    def __init__(
448        self,
449        **kwargs
450    ):
451        super(FirewallRuleListResult, self).__init__(**kwargs)
452        self.value = kwargs.get('value', None)
453
454
455class LogFile(ProxyResource):
456    """Represents a log file.
457
458    Variables are only populated by the server, and will be ignored when sending a request.
459
460    :ivar id: Fully qualified resource ID for the resource. Ex -
461     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
462    :vartype id: str
463    :ivar name: The name of the resource.
464    :vartype name: str
465    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
466     "Microsoft.Storage/storageAccounts".
467    :vartype type: str
468    :param size_in_kb: Size of the log file.
469    :type size_in_kb: long
470    :ivar created_time: Creation timestamp of the log file.
471    :vartype created_time: ~datetime.datetime
472    :ivar last_modified_time: Last modified timestamp of the log file.
473    :vartype last_modified_time: ~datetime.datetime
474    :param type_properties_type: Type of the log file.
475    :type type_properties_type: str
476    :ivar url: The url to download the log file from.
477    :vartype url: str
478    """
479
480    _validation = {
481        'id': {'readonly': True},
482        'name': {'readonly': True},
483        'type': {'readonly': True},
484        'created_time': {'readonly': True},
485        'last_modified_time': {'readonly': True},
486        'url': {'readonly': True},
487    }
488
489    _attribute_map = {
490        'id': {'key': 'id', 'type': 'str'},
491        'name': {'key': 'name', 'type': 'str'},
492        'type': {'key': 'type', 'type': 'str'},
493        'size_in_kb': {'key': 'properties.sizeInKB', 'type': 'long'},
494        'created_time': {'key': 'properties.createdTime', 'type': 'iso-8601'},
495        'last_modified_time': {'key': 'properties.lastModifiedTime', 'type': 'iso-8601'},
496        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
497        'url': {'key': 'properties.url', 'type': 'str'},
498    }
499
500    def __init__(
501        self,
502        **kwargs
503    ):
504        super(LogFile, self).__init__(**kwargs)
505        self.size_in_kb = kwargs.get('size_in_kb', None)
506        self.created_time = None
507        self.last_modified_time = None
508        self.type_properties_type = kwargs.get('type_properties_type', None)
509        self.url = None
510
511
512class LogFileListResult(msrest.serialization.Model):
513    """A list of log files.
514
515    :param value: The list of log files.
516    :type value: list[~azure.mgmt.rdbms.mariadb.models.LogFile]
517    """
518
519    _attribute_map = {
520        'value': {'key': 'value', 'type': '[LogFile]'},
521    }
522
523    def __init__(
524        self,
525        **kwargs
526    ):
527        super(LogFileListResult, self).__init__(**kwargs)
528        self.value = kwargs.get('value', None)
529
530
531class NameAvailability(msrest.serialization.Model):
532    """Represents a resource name availability.
533
534    :param message: Error Message.
535    :type message: str
536    :param name_available: Indicates whether the resource name is available.
537    :type name_available: bool
538    :param reason: Reason for name being unavailable.
539    :type reason: str
540    """
541
542    _attribute_map = {
543        'message': {'key': 'message', 'type': 'str'},
544        'name_available': {'key': 'nameAvailable', 'type': 'bool'},
545        'reason': {'key': 'reason', 'type': 'str'},
546    }
547
548    def __init__(
549        self,
550        **kwargs
551    ):
552        super(NameAvailability, self).__init__(**kwargs)
553        self.message = kwargs.get('message', None)
554        self.name_available = kwargs.get('name_available', None)
555        self.reason = kwargs.get('reason', None)
556
557
558class NameAvailabilityRequest(msrest.serialization.Model):
559    """Request from client to check resource name availability.
560
561    All required parameters must be populated in order to send to Azure.
562
563    :param name: Required. Resource name to verify.
564    :type name: str
565    :param type: Resource type used for verification.
566    :type type: str
567    """
568
569    _validation = {
570        'name': {'required': True},
571    }
572
573    _attribute_map = {
574        'name': {'key': 'name', 'type': 'str'},
575        'type': {'key': 'type', 'type': 'str'},
576    }
577
578    def __init__(
579        self,
580        **kwargs
581    ):
582        super(NameAvailabilityRequest, self).__init__(**kwargs)
583        self.name = kwargs['name']
584        self.type = kwargs.get('type', None)
585
586
587class Operation(msrest.serialization.Model):
588    """REST API operation definition.
589
590    Variables are only populated by the server, and will be ignored when sending a request.
591
592    :ivar name: The name of the operation being performed on this particular object.
593    :vartype name: str
594    :ivar display: The localized display information for this particular operation or action.
595    :vartype display: ~azure.mgmt.rdbms.mariadb.models.OperationDisplay
596    :ivar origin: The intended executor of the operation. Possible values include: "NotSpecified",
597     "user", "system".
598    :vartype origin: str or ~azure.mgmt.rdbms.mariadb.models.OperationOrigin
599    :ivar properties: Additional descriptions for the operation.
600    :vartype properties: dict[str, any]
601    """
602
603    _validation = {
604        'name': {'readonly': True},
605        'display': {'readonly': True},
606        'origin': {'readonly': True},
607        'properties': {'readonly': True},
608    }
609
610    _attribute_map = {
611        'name': {'key': 'name', 'type': 'str'},
612        'display': {'key': 'display', 'type': 'OperationDisplay'},
613        'origin': {'key': 'origin', 'type': 'str'},
614        'properties': {'key': 'properties', 'type': '{object}'},
615    }
616
617    def __init__(
618        self,
619        **kwargs
620    ):
621        super(Operation, self).__init__(**kwargs)
622        self.name = None
623        self.display = None
624        self.origin = None
625        self.properties = None
626
627
628class OperationDisplay(msrest.serialization.Model):
629    """Display metadata associated with the operation.
630
631    Variables are only populated by the server, and will be ignored when sending a request.
632
633    :ivar provider: Operation resource provider name.
634    :vartype provider: str
635    :ivar resource: Resource on which the operation is performed.
636    :vartype resource: str
637    :ivar operation: Localized friendly name for the operation.
638    :vartype operation: str
639    :ivar description: Operation description.
640    :vartype description: str
641    """
642
643    _validation = {
644        'provider': {'readonly': True},
645        'resource': {'readonly': True},
646        'operation': {'readonly': True},
647        'description': {'readonly': True},
648    }
649
650    _attribute_map = {
651        'provider': {'key': 'provider', 'type': 'str'},
652        'resource': {'key': 'resource', 'type': 'str'},
653        'operation': {'key': 'operation', 'type': 'str'},
654        'description': {'key': 'description', 'type': 'str'},
655    }
656
657    def __init__(
658        self,
659        **kwargs
660    ):
661        super(OperationDisplay, self).__init__(**kwargs)
662        self.provider = None
663        self.resource = None
664        self.operation = None
665        self.description = None
666
667
668class OperationListResult(msrest.serialization.Model):
669    """A list of resource provider operations.
670
671    :param value: The list of resource provider operations.
672    :type value: list[~azure.mgmt.rdbms.mariadb.models.Operation]
673    """
674
675    _attribute_map = {
676        'value': {'key': 'value', 'type': '[Operation]'},
677    }
678
679    def __init__(
680        self,
681        **kwargs
682    ):
683        super(OperationListResult, self).__init__(**kwargs)
684        self.value = kwargs.get('value', None)
685
686
687class PerformanceTierListResult(msrest.serialization.Model):
688    """A list of performance tiers.
689
690    :param value: The list of performance tiers.
691    :type value: list[~azure.mgmt.rdbms.mariadb.models.PerformanceTierProperties]
692    """
693
694    _attribute_map = {
695        'value': {'key': 'value', 'type': '[PerformanceTierProperties]'},
696    }
697
698    def __init__(
699        self,
700        **kwargs
701    ):
702        super(PerformanceTierListResult, self).__init__(**kwargs)
703        self.value = kwargs.get('value', None)
704
705
706class PerformanceTierProperties(msrest.serialization.Model):
707    """Performance tier properties.
708
709    :param id: ID of the performance tier.
710    :type id: str
711    :param max_backup_retention_days: Maximum Backup retention in days for the performance tier
712     edition.
713    :type max_backup_retention_days: int
714    :param min_backup_retention_days: Minimum Backup retention in days for the performance tier
715     edition.
716    :type min_backup_retention_days: int
717    :param max_storage_mb: Max storage allowed for a server.
718    :type max_storage_mb: int
719    :param min_large_storage_mb: Max storage allowed for a server.
720    :type min_large_storage_mb: int
721    :param max_large_storage_mb: Max storage allowed for a server.
722    :type max_large_storage_mb: int
723    :param min_storage_mb: Max storage allowed for a server.
724    :type min_storage_mb: int
725    :param service_level_objectives: Service level objectives associated with the performance tier.
726    :type service_level_objectives:
727     list[~azure.mgmt.rdbms.mariadb.models.PerformanceTierServiceLevelObjectives]
728    """
729
730    _attribute_map = {
731        'id': {'key': 'id', 'type': 'str'},
732        'max_backup_retention_days': {'key': 'maxBackupRetentionDays', 'type': 'int'},
733        'min_backup_retention_days': {'key': 'minBackupRetentionDays', 'type': 'int'},
734        'max_storage_mb': {'key': 'maxStorageMB', 'type': 'int'},
735        'min_large_storage_mb': {'key': 'minLargeStorageMB', 'type': 'int'},
736        'max_large_storage_mb': {'key': 'maxLargeStorageMB', 'type': 'int'},
737        'min_storage_mb': {'key': 'minStorageMB', 'type': 'int'},
738        'service_level_objectives': {'key': 'serviceLevelObjectives', 'type': '[PerformanceTierServiceLevelObjectives]'},
739    }
740
741    def __init__(
742        self,
743        **kwargs
744    ):
745        super(PerformanceTierProperties, self).__init__(**kwargs)
746        self.id = kwargs.get('id', None)
747        self.max_backup_retention_days = kwargs.get('max_backup_retention_days', None)
748        self.min_backup_retention_days = kwargs.get('min_backup_retention_days', None)
749        self.max_storage_mb = kwargs.get('max_storage_mb', None)
750        self.min_large_storage_mb = kwargs.get('min_large_storage_mb', None)
751        self.max_large_storage_mb = kwargs.get('max_large_storage_mb', None)
752        self.min_storage_mb = kwargs.get('min_storage_mb', None)
753        self.service_level_objectives = kwargs.get('service_level_objectives', None)
754
755
756class PerformanceTierServiceLevelObjectives(msrest.serialization.Model):
757    """Service level objectives for performance tier.
758
759    :param id: ID for the service level objective.
760    :type id: str
761    :param edition: Edition of the performance tier.
762    :type edition: str
763    :param v_core: vCore associated with the service level objective.
764    :type v_core: int
765    :param hardware_generation: Hardware generation associated with the service level objective.
766    :type hardware_generation: str
767    :param max_backup_retention_days: Maximum Backup retention in days for the performance tier
768     edition.
769    :type max_backup_retention_days: int
770    :param min_backup_retention_days: Minimum Backup retention in days for the performance tier
771     edition.
772    :type min_backup_retention_days: int
773    :param max_storage_mb: Max storage allowed for a server.
774    :type max_storage_mb: int
775    :param min_storage_mb: Max storage allowed for a server.
776    :type min_storage_mb: int
777    """
778
779    _attribute_map = {
780        'id': {'key': 'id', 'type': 'str'},
781        'edition': {'key': 'edition', 'type': 'str'},
782        'v_core': {'key': 'vCore', 'type': 'int'},
783        'hardware_generation': {'key': 'hardwareGeneration', 'type': 'str'},
784        'max_backup_retention_days': {'key': 'maxBackupRetentionDays', 'type': 'int'},
785        'min_backup_retention_days': {'key': 'minBackupRetentionDays', 'type': 'int'},
786        'max_storage_mb': {'key': 'maxStorageMB', 'type': 'int'},
787        'min_storage_mb': {'key': 'minStorageMB', 'type': 'int'},
788    }
789
790    def __init__(
791        self,
792        **kwargs
793    ):
794        super(PerformanceTierServiceLevelObjectives, self).__init__(**kwargs)
795        self.id = kwargs.get('id', None)
796        self.edition = kwargs.get('edition', None)
797        self.v_core = kwargs.get('v_core', None)
798        self.hardware_generation = kwargs.get('hardware_generation', None)
799        self.max_backup_retention_days = kwargs.get('max_backup_retention_days', None)
800        self.min_backup_retention_days = kwargs.get('min_backup_retention_days', None)
801        self.max_storage_mb = kwargs.get('max_storage_mb', None)
802        self.min_storage_mb = kwargs.get('min_storage_mb', None)
803
804
805class PrivateEndpointConnection(ProxyResource):
806    """A private endpoint connection.
807
808    Variables are only populated by the server, and will be ignored when sending a request.
809
810    :ivar id: Fully qualified resource ID for the resource. Ex -
811     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
812    :vartype id: str
813    :ivar name: The name of the resource.
814    :vartype name: str
815    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
816     "Microsoft.Storage/storageAccounts".
817    :vartype type: str
818    :param private_endpoint: Private endpoint which the connection belongs to.
819    :type private_endpoint: ~azure.mgmt.rdbms.mariadb.models.PrivateEndpointProperty
820    :param private_link_service_connection_state: Connection state of the private endpoint
821     connection.
822    :type private_link_service_connection_state:
823     ~azure.mgmt.rdbms.mariadb.models.PrivateLinkServiceConnectionStateProperty
824    :ivar provisioning_state: State of the private endpoint connection.
825    :vartype provisioning_state: str
826    """
827
828    _validation = {
829        'id': {'readonly': True},
830        'name': {'readonly': True},
831        'type': {'readonly': True},
832        'provisioning_state': {'readonly': True},
833    }
834
835    _attribute_map = {
836        'id': {'key': 'id', 'type': 'str'},
837        'name': {'key': 'name', 'type': 'str'},
838        'type': {'key': 'type', 'type': 'str'},
839        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpointProperty'},
840        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionStateProperty'},
841        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
842    }
843
844    def __init__(
845        self,
846        **kwargs
847    ):
848        super(PrivateEndpointConnection, self).__init__(**kwargs)
849        self.private_endpoint = kwargs.get('private_endpoint', None)
850        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
851        self.provisioning_state = None
852
853
854class PrivateEndpointConnectionListResult(msrest.serialization.Model):
855    """A list of private endpoint connections.
856
857    Variables are only populated by the server, and will be ignored when sending a request.
858
859    :ivar value: Array of results.
860    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.PrivateEndpointConnection]
861    :ivar next_link: Link to retrieve next page of results.
862    :vartype next_link: str
863    """
864
865    _validation = {
866        'value': {'readonly': True},
867        'next_link': {'readonly': True},
868    }
869
870    _attribute_map = {
871        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
872        'next_link': {'key': 'nextLink', 'type': 'str'},
873    }
874
875    def __init__(
876        self,
877        **kwargs
878    ):
879        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
880        self.value = None
881        self.next_link = None
882
883
884class PrivateEndpointProperty(msrest.serialization.Model):
885    """PrivateEndpointProperty.
886
887    :param id: Resource id of the private endpoint.
888    :type id: str
889    """
890
891    _attribute_map = {
892        'id': {'key': 'id', 'type': 'str'},
893    }
894
895    def __init__(
896        self,
897        **kwargs
898    ):
899        super(PrivateEndpointProperty, self).__init__(**kwargs)
900        self.id = kwargs.get('id', None)
901
902
903class PrivateLinkResource(ProxyResource):
904    """A private link resource.
905
906    Variables are only populated by the server, and will be ignored when sending a request.
907
908    :ivar id: Fully qualified resource ID for the resource. Ex -
909     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
910    :vartype id: str
911    :ivar name: The name of the resource.
912    :vartype name: str
913    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
914     "Microsoft.Storage/storageAccounts".
915    :vartype type: str
916    :ivar properties: The private link resource group id.
917    :vartype properties: ~azure.mgmt.rdbms.mariadb.models.PrivateLinkResourceProperties
918    """
919
920    _validation = {
921        'id': {'readonly': True},
922        'name': {'readonly': True},
923        'type': {'readonly': True},
924        'properties': {'readonly': True},
925    }
926
927    _attribute_map = {
928        'id': {'key': 'id', 'type': 'str'},
929        'name': {'key': 'name', 'type': 'str'},
930        'type': {'key': 'type', 'type': 'str'},
931        'properties': {'key': 'properties', 'type': 'PrivateLinkResourceProperties'},
932    }
933
934    def __init__(
935        self,
936        **kwargs
937    ):
938        super(PrivateLinkResource, self).__init__(**kwargs)
939        self.properties = None
940
941
942class PrivateLinkResourceListResult(msrest.serialization.Model):
943    """A list of private link resources.
944
945    Variables are only populated by the server, and will be ignored when sending a request.
946
947    :ivar value: Array of results.
948    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.PrivateLinkResource]
949    :ivar next_link: Link to retrieve next page of results.
950    :vartype next_link: str
951    """
952
953    _validation = {
954        'value': {'readonly': True},
955        'next_link': {'readonly': True},
956    }
957
958    _attribute_map = {
959        'value': {'key': 'value', 'type': '[PrivateLinkResource]'},
960        'next_link': {'key': 'nextLink', 'type': 'str'},
961    }
962
963    def __init__(
964        self,
965        **kwargs
966    ):
967        super(PrivateLinkResourceListResult, self).__init__(**kwargs)
968        self.value = None
969        self.next_link = None
970
971
972class PrivateLinkResourceProperties(msrest.serialization.Model):
973    """Properties of a private link resource.
974
975    Variables are only populated by the server, and will be ignored when sending a request.
976
977    :ivar group_id: The private link resource group id.
978    :vartype group_id: str
979    :ivar required_members: The private link resource required member names.
980    :vartype required_members: list[str]
981    """
982
983    _validation = {
984        'group_id': {'readonly': True},
985        'required_members': {'readonly': True},
986    }
987
988    _attribute_map = {
989        'group_id': {'key': 'groupId', 'type': 'str'},
990        'required_members': {'key': 'requiredMembers', 'type': '[str]'},
991    }
992
993    def __init__(
994        self,
995        **kwargs
996    ):
997        super(PrivateLinkResourceProperties, self).__init__(**kwargs)
998        self.group_id = None
999        self.required_members = None
1000
1001
1002class PrivateLinkServiceConnectionStateProperty(msrest.serialization.Model):
1003    """PrivateLinkServiceConnectionStateProperty.
1004
1005    Variables are only populated by the server, and will be ignored when sending a request.
1006
1007    All required parameters must be populated in order to send to Azure.
1008
1009    :param status: Required. The private link service connection status.
1010    :type status: str
1011    :param description: Required. The private link service connection description.
1012    :type description: str
1013    :ivar actions_required: The actions required for private link service connection.
1014    :vartype actions_required: str
1015    """
1016
1017    _validation = {
1018        'status': {'required': True},
1019        'description': {'required': True},
1020        'actions_required': {'readonly': True},
1021    }
1022
1023    _attribute_map = {
1024        'status': {'key': 'status', 'type': 'str'},
1025        'description': {'key': 'description', 'type': 'str'},
1026        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
1027    }
1028
1029    def __init__(
1030        self,
1031        **kwargs
1032    ):
1033        super(PrivateLinkServiceConnectionStateProperty, self).__init__(**kwargs)
1034        self.status = kwargs['status']
1035        self.description = kwargs['description']
1036        self.actions_required = None
1037
1038
1039class QueryPerformanceInsightResetDataResult(msrest.serialization.Model):
1040    """Result of Query Performance Insight data reset.
1041
1042    :param status: Indicates result of the operation. Possible values include: "Succeeded",
1043     "Failed".
1044    :type status: str or
1045     ~azure.mgmt.rdbms.mariadb.models.QueryPerformanceInsightResetDataResultState
1046    :param message: operation message.
1047    :type message: str
1048    """
1049
1050    _attribute_map = {
1051        'status': {'key': 'status', 'type': 'str'},
1052        'message': {'key': 'message', 'type': 'str'},
1053    }
1054
1055    def __init__(
1056        self,
1057        **kwargs
1058    ):
1059        super(QueryPerformanceInsightResetDataResult, self).__init__(**kwargs)
1060        self.status = kwargs.get('status', None)
1061        self.message = kwargs.get('message', None)
1062
1063
1064class QueryStatistic(ProxyResource):
1065    """Represents a Query Statistic.
1066
1067    Variables are only populated by the server, and will be ignored when sending a request.
1068
1069    :ivar id: Fully qualified resource ID for the resource. Ex -
1070     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1071    :vartype id: str
1072    :ivar name: The name of the resource.
1073    :vartype name: str
1074    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1075     "Microsoft.Storage/storageAccounts".
1076    :vartype type: str
1077    :param query_id: Database query identifier.
1078    :type query_id: str
1079    :param start_time: Observation start time.
1080    :type start_time: ~datetime.datetime
1081    :param end_time: Observation end time.
1082    :type end_time: ~datetime.datetime
1083    :param aggregation_function: Aggregation function name.
1084    :type aggregation_function: str
1085    :param database_names: The list of database names.
1086    :type database_names: list[str]
1087    :param query_execution_count: Number of query executions in this time interval.
1088    :type query_execution_count: long
1089    :param metric_name: Metric name.
1090    :type metric_name: str
1091    :param metric_display_name: Metric display name.
1092    :type metric_display_name: str
1093    :param metric_value: Metric value.
1094    :type metric_value: float
1095    :param metric_value_unit: Metric value unit.
1096    :type metric_value_unit: str
1097    """
1098
1099    _validation = {
1100        'id': {'readonly': True},
1101        'name': {'readonly': True},
1102        'type': {'readonly': True},
1103    }
1104
1105    _attribute_map = {
1106        'id': {'key': 'id', 'type': 'str'},
1107        'name': {'key': 'name', 'type': 'str'},
1108        'type': {'key': 'type', 'type': 'str'},
1109        'query_id': {'key': 'properties.queryId', 'type': 'str'},
1110        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
1111        'end_time': {'key': 'properties.endTime', 'type': 'iso-8601'},
1112        'aggregation_function': {'key': 'properties.aggregationFunction', 'type': 'str'},
1113        'database_names': {'key': 'properties.databaseNames', 'type': '[str]'},
1114        'query_execution_count': {'key': 'properties.queryExecutionCount', 'type': 'long'},
1115        'metric_name': {'key': 'properties.metricName', 'type': 'str'},
1116        'metric_display_name': {'key': 'properties.metricDisplayName', 'type': 'str'},
1117        'metric_value': {'key': 'properties.metricValue', 'type': 'float'},
1118        'metric_value_unit': {'key': 'properties.metricValueUnit', 'type': 'str'},
1119    }
1120
1121    def __init__(
1122        self,
1123        **kwargs
1124    ):
1125        super(QueryStatistic, self).__init__(**kwargs)
1126        self.query_id = kwargs.get('query_id', None)
1127        self.start_time = kwargs.get('start_time', None)
1128        self.end_time = kwargs.get('end_time', None)
1129        self.aggregation_function = kwargs.get('aggregation_function', None)
1130        self.database_names = kwargs.get('database_names', None)
1131        self.query_execution_count = kwargs.get('query_execution_count', None)
1132        self.metric_name = kwargs.get('metric_name', None)
1133        self.metric_display_name = kwargs.get('metric_display_name', None)
1134        self.metric_value = kwargs.get('metric_value', None)
1135        self.metric_value_unit = kwargs.get('metric_value_unit', None)
1136
1137
1138class QueryText(ProxyResource):
1139    """Represents a Query Text.
1140
1141    Variables are only populated by the server, and will be ignored when sending a request.
1142
1143    :ivar id: Fully qualified resource ID for the resource. Ex -
1144     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1145    :vartype id: str
1146    :ivar name: The name of the resource.
1147    :vartype name: str
1148    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1149     "Microsoft.Storage/storageAccounts".
1150    :vartype type: str
1151    :param query_id: Query identifier unique to the server.
1152    :type query_id: str
1153    :param query_text: Query text.
1154    :type query_text: str
1155    """
1156
1157    _validation = {
1158        'id': {'readonly': True},
1159        'name': {'readonly': True},
1160        'type': {'readonly': True},
1161    }
1162
1163    _attribute_map = {
1164        'id': {'key': 'id', 'type': 'str'},
1165        'name': {'key': 'name', 'type': 'str'},
1166        'type': {'key': 'type', 'type': 'str'},
1167        'query_id': {'key': 'properties.queryId', 'type': 'str'},
1168        'query_text': {'key': 'properties.queryText', 'type': 'str'},
1169    }
1170
1171    def __init__(
1172        self,
1173        **kwargs
1174    ):
1175        super(QueryText, self).__init__(**kwargs)
1176        self.query_id = kwargs.get('query_id', None)
1177        self.query_text = kwargs.get('query_text', None)
1178
1179
1180class QueryTextsResultList(msrest.serialization.Model):
1181    """A list of query texts.
1182
1183    Variables are only populated by the server, and will be ignored when sending a request.
1184
1185    :ivar value: The list of query texts.
1186    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.QueryText]
1187    :ivar next_link: Link to retrieve next page of results.
1188    :vartype next_link: str
1189    """
1190
1191    _validation = {
1192        'value': {'readonly': True},
1193        'next_link': {'readonly': True},
1194    }
1195
1196    _attribute_map = {
1197        'value': {'key': 'value', 'type': '[QueryText]'},
1198        'next_link': {'key': 'nextLink', 'type': 'str'},
1199    }
1200
1201    def __init__(
1202        self,
1203        **kwargs
1204    ):
1205        super(QueryTextsResultList, self).__init__(**kwargs)
1206        self.value = None
1207        self.next_link = None
1208
1209
1210class RecommendationAction(ProxyResource):
1211    """Represents a Recommendation Action.
1212
1213    Variables are only populated by the server, and will be ignored when sending a request.
1214
1215    :ivar id: Fully qualified resource ID for the resource. Ex -
1216     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1217    :vartype id: str
1218    :ivar name: The name of the resource.
1219    :vartype name: str
1220    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1221     "Microsoft.Storage/storageAccounts".
1222    :vartype type: str
1223    :param advisor_name: Advisor name.
1224    :type advisor_name: str
1225    :param session_id: Recommendation action session identifier.
1226    :type session_id: str
1227    :param action_id: Recommendation action identifier.
1228    :type action_id: int
1229    :param created_time: Recommendation action creation time.
1230    :type created_time: ~datetime.datetime
1231    :param expiration_time: Recommendation action expiration time.
1232    :type expiration_time: ~datetime.datetime
1233    :param reason: Recommendation action reason.
1234    :type reason: str
1235    :param recommendation_type: Recommendation action type.
1236    :type recommendation_type: str
1237    :param details: Recommendation action details.
1238    :type details: dict[str, str]
1239    """
1240
1241    _validation = {
1242        'id': {'readonly': True},
1243        'name': {'readonly': True},
1244        'type': {'readonly': True},
1245    }
1246
1247    _attribute_map = {
1248        'id': {'key': 'id', 'type': 'str'},
1249        'name': {'key': 'name', 'type': 'str'},
1250        'type': {'key': 'type', 'type': 'str'},
1251        'advisor_name': {'key': 'properties.advisorName', 'type': 'str'},
1252        'session_id': {'key': 'properties.sessionId', 'type': 'str'},
1253        'action_id': {'key': 'properties.actionId', 'type': 'int'},
1254        'created_time': {'key': 'properties.createdTime', 'type': 'iso-8601'},
1255        'expiration_time': {'key': 'properties.expirationTime', 'type': 'iso-8601'},
1256        'reason': {'key': 'properties.reason', 'type': 'str'},
1257        'recommendation_type': {'key': 'properties.recommendationType', 'type': 'str'},
1258        'details': {'key': 'properties.details', 'type': '{str}'},
1259    }
1260
1261    def __init__(
1262        self,
1263        **kwargs
1264    ):
1265        super(RecommendationAction, self).__init__(**kwargs)
1266        self.advisor_name = kwargs.get('advisor_name', None)
1267        self.session_id = kwargs.get('session_id', None)
1268        self.action_id = kwargs.get('action_id', None)
1269        self.created_time = kwargs.get('created_time', None)
1270        self.expiration_time = kwargs.get('expiration_time', None)
1271        self.reason = kwargs.get('reason', None)
1272        self.recommendation_type = kwargs.get('recommendation_type', None)
1273        self.details = kwargs.get('details', None)
1274
1275
1276class RecommendationActionsResultList(msrest.serialization.Model):
1277    """A list of recommendation actions.
1278
1279    Variables are only populated by the server, and will be ignored when sending a request.
1280
1281    :ivar value: The list of recommendation action advisors.
1282    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.RecommendationAction]
1283    :ivar next_link: Link to retrieve next page of results.
1284    :vartype next_link: str
1285    """
1286
1287    _validation = {
1288        'value': {'readonly': True},
1289        'next_link': {'readonly': True},
1290    }
1291
1292    _attribute_map = {
1293        'value': {'key': 'value', 'type': '[RecommendationAction]'},
1294        'next_link': {'key': 'nextLink', 'type': 'str'},
1295    }
1296
1297    def __init__(
1298        self,
1299        **kwargs
1300    ):
1301        super(RecommendationActionsResultList, self).__init__(**kwargs)
1302        self.value = None
1303        self.next_link = None
1304
1305
1306class RecommendedActionSessionsOperationStatus(msrest.serialization.Model):
1307    """Recommendation action session operation status.
1308
1309    :param name: Operation identifier.
1310    :type name: str
1311    :param start_time: Operation start time.
1312    :type start_time: ~datetime.datetime
1313    :param status: Operation status.
1314    :type status: str
1315    """
1316
1317    _attribute_map = {
1318        'name': {'key': 'name', 'type': 'str'},
1319        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
1320        'status': {'key': 'status', 'type': 'str'},
1321    }
1322
1323    def __init__(
1324        self,
1325        **kwargs
1326    ):
1327        super(RecommendedActionSessionsOperationStatus, self).__init__(**kwargs)
1328        self.name = kwargs.get('name', None)
1329        self.start_time = kwargs.get('start_time', None)
1330        self.status = kwargs.get('status', None)
1331
1332
1333class RecoverableServerResource(ProxyResource):
1334    """A recoverable server resource.
1335
1336    Variables are only populated by the server, and will be ignored when sending a request.
1337
1338    :ivar id: Fully qualified resource ID for the resource. Ex -
1339     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1340    :vartype id: str
1341    :ivar name: The name of the resource.
1342    :vartype name: str
1343    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1344     "Microsoft.Storage/storageAccounts".
1345    :vartype type: str
1346    :ivar last_available_backup_date_time: The last available backup date time.
1347    :vartype last_available_backup_date_time: str
1348    :ivar service_level_objective: The service level objective.
1349    :vartype service_level_objective: str
1350    :ivar edition: Edition of the performance tier.
1351    :vartype edition: str
1352    :ivar v_core: vCore associated with the service level objective.
1353    :vartype v_core: int
1354    :ivar hardware_generation: Hardware generation associated with the service level objective.
1355    :vartype hardware_generation: str
1356    :ivar version: The MariaDB version.
1357    :vartype version: str
1358    """
1359
1360    _validation = {
1361        'id': {'readonly': True},
1362        'name': {'readonly': True},
1363        'type': {'readonly': True},
1364        'last_available_backup_date_time': {'readonly': True},
1365        'service_level_objective': {'readonly': True},
1366        'edition': {'readonly': True},
1367        'v_core': {'readonly': True},
1368        'hardware_generation': {'readonly': True},
1369        'version': {'readonly': True},
1370    }
1371
1372    _attribute_map = {
1373        'id': {'key': 'id', 'type': 'str'},
1374        'name': {'key': 'name', 'type': 'str'},
1375        'type': {'key': 'type', 'type': 'str'},
1376        'last_available_backup_date_time': {'key': 'properties.lastAvailableBackupDateTime', 'type': 'str'},
1377        'service_level_objective': {'key': 'properties.serviceLevelObjective', 'type': 'str'},
1378        'edition': {'key': 'properties.edition', 'type': 'str'},
1379        'v_core': {'key': 'properties.vCore', 'type': 'int'},
1380        'hardware_generation': {'key': 'properties.hardwareGeneration', 'type': 'str'},
1381        'version': {'key': 'properties.version', 'type': 'str'},
1382    }
1383
1384    def __init__(
1385        self,
1386        **kwargs
1387    ):
1388        super(RecoverableServerResource, self).__init__(**kwargs)
1389        self.last_available_backup_date_time = None
1390        self.service_level_objective = None
1391        self.edition = None
1392        self.v_core = None
1393        self.hardware_generation = None
1394        self.version = None
1395
1396
1397class TrackedResource(Resource):
1398    """The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'.
1399
1400    Variables are only populated by the server, and will be ignored when sending a request.
1401
1402    All required parameters must be populated in order to send to Azure.
1403
1404    :ivar id: Fully qualified resource ID for the resource. Ex -
1405     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1406    :vartype id: str
1407    :ivar name: The name of the resource.
1408    :vartype name: str
1409    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1410     "Microsoft.Storage/storageAccounts".
1411    :vartype type: str
1412    :param tags: A set of tags. Resource tags.
1413    :type tags: dict[str, str]
1414    :param location: Required. The geo-location where the resource lives.
1415    :type location: str
1416    """
1417
1418    _validation = {
1419        'id': {'readonly': True},
1420        'name': {'readonly': True},
1421        'type': {'readonly': True},
1422        'location': {'required': True},
1423    }
1424
1425    _attribute_map = {
1426        'id': {'key': 'id', 'type': 'str'},
1427        'name': {'key': 'name', 'type': 'str'},
1428        'type': {'key': 'type', 'type': 'str'},
1429        'tags': {'key': 'tags', 'type': '{str}'},
1430        'location': {'key': 'location', 'type': 'str'},
1431    }
1432
1433    def __init__(
1434        self,
1435        **kwargs
1436    ):
1437        super(TrackedResource, self).__init__(**kwargs)
1438        self.tags = kwargs.get('tags', None)
1439        self.location = kwargs['location']
1440
1441
1442class Server(TrackedResource):
1443    """Represents a server.
1444
1445    Variables are only populated by the server, and will be ignored when sending a request.
1446
1447    All required parameters must be populated in order to send to Azure.
1448
1449    :ivar id: Fully qualified resource ID for the resource. Ex -
1450     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1451    :vartype id: str
1452    :ivar name: The name of the resource.
1453    :vartype name: str
1454    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1455     "Microsoft.Storage/storageAccounts".
1456    :vartype type: str
1457    :param tags: A set of tags. Resource tags.
1458    :type tags: dict[str, str]
1459    :param location: Required. The geo-location where the resource lives.
1460    :type location: str
1461    :param sku: The SKU (pricing tier) of the server.
1462    :type sku: ~azure.mgmt.rdbms.mariadb.models.Sku
1463    :param administrator_login: The administrator's login name of a server. Can only be specified
1464     when the server is being created (and is required for creation).
1465    :type administrator_login: str
1466    :param version: Server version. Possible values include: "10.2", "10.3".
1467    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
1468    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
1469     include: "Enabled", "Disabled".
1470    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
1471    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
1472     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
1473    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
1474    :param user_visible_state: A state of a server that is visible to user. Possible values
1475     include: "Ready", "Dropping", "Disabled".
1476    :type user_visible_state: str or ~azure.mgmt.rdbms.mariadb.models.ServerState
1477    :param fully_qualified_domain_name: The fully qualified domain name of a server.
1478    :type fully_qualified_domain_name: str
1479    :param earliest_restore_date: Earliest restore point creation time (ISO8601 format).
1480    :type earliest_restore_date: ~datetime.datetime
1481    :param storage_profile: Storage profile of a server.
1482    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
1483    :param replication_role: The replication role of the server.
1484    :type replication_role: str
1485    :param master_server_id: The master server id of a replica server.
1486    :type master_server_id: str
1487    :param replica_capacity: The maximum number of replicas that a master server can have.
1488    :type replica_capacity: int
1489    :param public_network_access: Whether or not public network access is allowed for this server.
1490     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
1491     "Enabled", "Disabled".
1492    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
1493    :ivar private_endpoint_connections: List of private endpoint connections on a server.
1494    :vartype private_endpoint_connections:
1495     list[~azure.mgmt.rdbms.mariadb.models.ServerPrivateEndpointConnection]
1496    """
1497
1498    _validation = {
1499        'id': {'readonly': True},
1500        'name': {'readonly': True},
1501        'type': {'readonly': True},
1502        'location': {'required': True},
1503        'replica_capacity': {'minimum': 0},
1504        'private_endpoint_connections': {'readonly': True},
1505    }
1506
1507    _attribute_map = {
1508        'id': {'key': 'id', 'type': 'str'},
1509        'name': {'key': 'name', 'type': 'str'},
1510        'type': {'key': 'type', 'type': 'str'},
1511        'tags': {'key': 'tags', 'type': '{str}'},
1512        'location': {'key': 'location', 'type': 'str'},
1513        'sku': {'key': 'sku', 'type': 'Sku'},
1514        'administrator_login': {'key': 'properties.administratorLogin', 'type': 'str'},
1515        'version': {'key': 'properties.version', 'type': 'str'},
1516        'ssl_enforcement': {'key': 'properties.sslEnforcement', 'type': 'str'},
1517        'minimal_tls_version': {'key': 'properties.minimalTlsVersion', 'type': 'str'},
1518        'user_visible_state': {'key': 'properties.userVisibleState', 'type': 'str'},
1519        'fully_qualified_domain_name': {'key': 'properties.fullyQualifiedDomainName', 'type': 'str'},
1520        'earliest_restore_date': {'key': 'properties.earliestRestoreDate', 'type': 'iso-8601'},
1521        'storage_profile': {'key': 'properties.storageProfile', 'type': 'StorageProfile'},
1522        'replication_role': {'key': 'properties.replicationRole', 'type': 'str'},
1523        'master_server_id': {'key': 'properties.masterServerId', 'type': 'str'},
1524        'replica_capacity': {'key': 'properties.replicaCapacity', 'type': 'int'},
1525        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
1526        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[ServerPrivateEndpointConnection]'},
1527    }
1528
1529    def __init__(
1530        self,
1531        **kwargs
1532    ):
1533        super(Server, self).__init__(**kwargs)
1534        self.sku = kwargs.get('sku', None)
1535        self.administrator_login = kwargs.get('administrator_login', None)
1536        self.version = kwargs.get('version', None)
1537        self.ssl_enforcement = kwargs.get('ssl_enforcement', None)
1538        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
1539        self.user_visible_state = kwargs.get('user_visible_state', None)
1540        self.fully_qualified_domain_name = kwargs.get('fully_qualified_domain_name', None)
1541        self.earliest_restore_date = kwargs.get('earliest_restore_date', None)
1542        self.storage_profile = kwargs.get('storage_profile', None)
1543        self.replication_role = kwargs.get('replication_role', None)
1544        self.master_server_id = kwargs.get('master_server_id', None)
1545        self.replica_capacity = kwargs.get('replica_capacity', None)
1546        self.public_network_access = kwargs.get('public_network_access', None)
1547        self.private_endpoint_connections = None
1548
1549
1550class ServerForCreate(msrest.serialization.Model):
1551    """Represents a server to be created.
1552
1553    All required parameters must be populated in order to send to Azure.
1554
1555    :param sku: The SKU (pricing tier) of the server.
1556    :type sku: ~azure.mgmt.rdbms.mariadb.models.Sku
1557    :param properties: Required. Properties of the server.
1558    :type properties: ~azure.mgmt.rdbms.mariadb.models.ServerPropertiesForCreate
1559    :param location: Required. The location the resource resides in.
1560    :type location: str
1561    :param tags: A set of tags. Application-specific metadata in the form of key-value pairs.
1562    :type tags: dict[str, str]
1563    """
1564
1565    _validation = {
1566        'properties': {'required': True},
1567        'location': {'required': True},
1568    }
1569
1570    _attribute_map = {
1571        'sku': {'key': 'sku', 'type': 'Sku'},
1572        'properties': {'key': 'properties', 'type': 'ServerPropertiesForCreate'},
1573        'location': {'key': 'location', 'type': 'str'},
1574        'tags': {'key': 'tags', 'type': '{str}'},
1575    }
1576
1577    def __init__(
1578        self,
1579        **kwargs
1580    ):
1581        super(ServerForCreate, self).__init__(**kwargs)
1582        self.sku = kwargs.get('sku', None)
1583        self.properties = kwargs['properties']
1584        self.location = kwargs['location']
1585        self.tags = kwargs.get('tags', None)
1586
1587
1588class ServerListResult(msrest.serialization.Model):
1589    """A list of servers.
1590
1591    :param value: The list of servers.
1592    :type value: list[~azure.mgmt.rdbms.mariadb.models.Server]
1593    """
1594
1595    _attribute_map = {
1596        'value': {'key': 'value', 'type': '[Server]'},
1597    }
1598
1599    def __init__(
1600        self,
1601        **kwargs
1602    ):
1603        super(ServerListResult, self).__init__(**kwargs)
1604        self.value = kwargs.get('value', None)
1605
1606
1607class ServerPrivateEndpointConnection(msrest.serialization.Model):
1608    """A private endpoint connection under a server.
1609
1610    Variables are only populated by the server, and will be ignored when sending a request.
1611
1612    :ivar id: Resource Id of the private endpoint connection.
1613    :vartype id: str
1614    :ivar properties: Private endpoint connection properties.
1615    :vartype properties: ~azure.mgmt.rdbms.mariadb.models.ServerPrivateEndpointConnectionProperties
1616    """
1617
1618    _validation = {
1619        'id': {'readonly': True},
1620        'properties': {'readonly': True},
1621    }
1622
1623    _attribute_map = {
1624        'id': {'key': 'id', 'type': 'str'},
1625        'properties': {'key': 'properties', 'type': 'ServerPrivateEndpointConnectionProperties'},
1626    }
1627
1628    def __init__(
1629        self,
1630        **kwargs
1631    ):
1632        super(ServerPrivateEndpointConnection, self).__init__(**kwargs)
1633        self.id = None
1634        self.properties = None
1635
1636
1637class ServerPrivateEndpointConnectionProperties(msrest.serialization.Model):
1638    """Properties of a private endpoint connection.
1639
1640    Variables are only populated by the server, and will be ignored when sending a request.
1641
1642    :param private_endpoint: Private endpoint which the connection belongs to.
1643    :type private_endpoint: ~azure.mgmt.rdbms.mariadb.models.PrivateEndpointProperty
1644    :param private_link_service_connection_state: Connection state of the private endpoint
1645     connection.
1646    :type private_link_service_connection_state:
1647     ~azure.mgmt.rdbms.mariadb.models.ServerPrivateLinkServiceConnectionStateProperty
1648    :ivar provisioning_state: State of the private endpoint connection. Possible values include:
1649     "Approving", "Ready", "Dropping", "Failed", "Rejecting".
1650    :vartype provisioning_state: str or
1651     ~azure.mgmt.rdbms.mariadb.models.PrivateEndpointProvisioningState
1652    """
1653
1654    _validation = {
1655        'provisioning_state': {'readonly': True},
1656    }
1657
1658    _attribute_map = {
1659        'private_endpoint': {'key': 'privateEndpoint', 'type': 'PrivateEndpointProperty'},
1660        'private_link_service_connection_state': {'key': 'privateLinkServiceConnectionState', 'type': 'ServerPrivateLinkServiceConnectionStateProperty'},
1661        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1662    }
1663
1664    def __init__(
1665        self,
1666        **kwargs
1667    ):
1668        super(ServerPrivateEndpointConnectionProperties, self).__init__(**kwargs)
1669        self.private_endpoint = kwargs.get('private_endpoint', None)
1670        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
1671        self.provisioning_state = None
1672
1673
1674class ServerPrivateLinkServiceConnectionStateProperty(msrest.serialization.Model):
1675    """ServerPrivateLinkServiceConnectionStateProperty.
1676
1677    Variables are only populated by the server, and will be ignored when sending a request.
1678
1679    All required parameters must be populated in order to send to Azure.
1680
1681    :param status: Required. The private link service connection status. Possible values include:
1682     "Approved", "Pending", "Rejected", "Disconnected".
1683    :type status: str or ~azure.mgmt.rdbms.mariadb.models.PrivateLinkServiceConnectionStateStatus
1684    :param description: Required. The private link service connection description.
1685    :type description: str
1686    :ivar actions_required: The actions required for private link service connection. Possible
1687     values include: "None".
1688    :vartype actions_required: str or
1689     ~azure.mgmt.rdbms.mariadb.models.PrivateLinkServiceConnectionStateActionsRequire
1690    """
1691
1692    _validation = {
1693        'status': {'required': True},
1694        'description': {'required': True},
1695        'actions_required': {'readonly': True},
1696    }
1697
1698    _attribute_map = {
1699        'status': {'key': 'status', 'type': 'str'},
1700        'description': {'key': 'description', 'type': 'str'},
1701        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
1702    }
1703
1704    def __init__(
1705        self,
1706        **kwargs
1707    ):
1708        super(ServerPrivateLinkServiceConnectionStateProperty, self).__init__(**kwargs)
1709        self.status = kwargs['status']
1710        self.description = kwargs['description']
1711        self.actions_required = None
1712
1713
1714class ServerPropertiesForCreate(msrest.serialization.Model):
1715    """The properties used to create a new server.
1716
1717    You probably want to use the sub-classes and not this class directly. Known
1718    sub-classes are: ServerPropertiesForDefaultCreate, ServerPropertiesForGeoRestore, ServerPropertiesForRestore, ServerPropertiesForReplica.
1719
1720    All required parameters must be populated in order to send to Azure.
1721
1722    :param version: Server version. Possible values include: "10.2", "10.3".
1723    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
1724    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
1725     include: "Enabled", "Disabled".
1726    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
1727    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
1728     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
1729    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
1730    :param public_network_access: Whether or not public network access is allowed for this server.
1731     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
1732     "Enabled", "Disabled".
1733    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
1734    :param storage_profile: Storage profile of a server.
1735    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
1736    :param create_mode: Required. The mode to create a new server.Constant filled by server.
1737     Possible values include: "Default", "PointInTimeRestore", "GeoRestore", "Replica".
1738    :type create_mode: str or ~azure.mgmt.rdbms.mariadb.models.CreateMode
1739    """
1740
1741    _validation = {
1742        'create_mode': {'required': True},
1743    }
1744
1745    _attribute_map = {
1746        'version': {'key': 'version', 'type': 'str'},
1747        'ssl_enforcement': {'key': 'sslEnforcement', 'type': 'str'},
1748        'minimal_tls_version': {'key': 'minimalTlsVersion', 'type': 'str'},
1749        'public_network_access': {'key': 'publicNetworkAccess', 'type': 'str'},
1750        'storage_profile': {'key': 'storageProfile', 'type': 'StorageProfile'},
1751        'create_mode': {'key': 'createMode', 'type': 'str'},
1752    }
1753
1754    _subtype_map = {
1755        'create_mode': {'Default': 'ServerPropertiesForDefaultCreate', 'GeoRestore': 'ServerPropertiesForGeoRestore', 'PointInTimeRestore': 'ServerPropertiesForRestore', 'Replica': 'ServerPropertiesForReplica'}
1756    }
1757
1758    def __init__(
1759        self,
1760        **kwargs
1761    ):
1762        super(ServerPropertiesForCreate, self).__init__(**kwargs)
1763        self.version = kwargs.get('version', None)
1764        self.ssl_enforcement = kwargs.get('ssl_enforcement', None)
1765        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
1766        self.public_network_access = kwargs.get('public_network_access', None)
1767        self.storage_profile = kwargs.get('storage_profile', None)
1768        self.create_mode = None  # type: Optional[str]
1769
1770
1771class ServerPropertiesForDefaultCreate(ServerPropertiesForCreate):
1772    """The properties used to create a new server.
1773
1774    All required parameters must be populated in order to send to Azure.
1775
1776    :param version: Server version. Possible values include: "10.2", "10.3".
1777    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
1778    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
1779     include: "Enabled", "Disabled".
1780    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
1781    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
1782     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
1783    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
1784    :param public_network_access: Whether or not public network access is allowed for this server.
1785     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
1786     "Enabled", "Disabled".
1787    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
1788    :param storage_profile: Storage profile of a server.
1789    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
1790    :param create_mode: Required. The mode to create a new server.Constant filled by server.
1791     Possible values include: "Default", "PointInTimeRestore", "GeoRestore", "Replica".
1792    :type create_mode: str or ~azure.mgmt.rdbms.mariadb.models.CreateMode
1793    :param administrator_login: Required. The administrator's login name of a server. Can only be
1794     specified when the server is being created (and is required for creation).
1795    :type administrator_login: str
1796    :param administrator_login_password: Required. The password of the administrator login.
1797    :type administrator_login_password: str
1798    """
1799
1800    _validation = {
1801        'create_mode': {'required': True},
1802        'administrator_login': {'required': True},
1803        'administrator_login_password': {'required': True},
1804    }
1805
1806    _attribute_map = {
1807        'version': {'key': 'version', 'type': 'str'},
1808        'ssl_enforcement': {'key': 'sslEnforcement', 'type': 'str'},
1809        'minimal_tls_version': {'key': 'minimalTlsVersion', 'type': 'str'},
1810        'public_network_access': {'key': 'publicNetworkAccess', 'type': 'str'},
1811        'storage_profile': {'key': 'storageProfile', 'type': 'StorageProfile'},
1812        'create_mode': {'key': 'createMode', 'type': 'str'},
1813        'administrator_login': {'key': 'administratorLogin', 'type': 'str'},
1814        'administrator_login_password': {'key': 'administratorLoginPassword', 'type': 'str'},
1815    }
1816
1817    def __init__(
1818        self,
1819        **kwargs
1820    ):
1821        super(ServerPropertiesForDefaultCreate, self).__init__(**kwargs)
1822        self.create_mode = 'Default'  # type: str
1823        self.administrator_login = kwargs['administrator_login']
1824        self.administrator_login_password = kwargs['administrator_login_password']
1825
1826
1827class ServerPropertiesForGeoRestore(ServerPropertiesForCreate):
1828    """The properties used to create a new server by restoring to a different region from a geo replicated backup.
1829
1830    All required parameters must be populated in order to send to Azure.
1831
1832    :param version: Server version. Possible values include: "10.2", "10.3".
1833    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
1834    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
1835     include: "Enabled", "Disabled".
1836    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
1837    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
1838     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
1839    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
1840    :param public_network_access: Whether or not public network access is allowed for this server.
1841     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
1842     "Enabled", "Disabled".
1843    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
1844    :param storage_profile: Storage profile of a server.
1845    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
1846    :param create_mode: Required. The mode to create a new server.Constant filled by server.
1847     Possible values include: "Default", "PointInTimeRestore", "GeoRestore", "Replica".
1848    :type create_mode: str or ~azure.mgmt.rdbms.mariadb.models.CreateMode
1849    :param source_server_id: Required. The source server id to restore from.
1850    :type source_server_id: str
1851    """
1852
1853    _validation = {
1854        'create_mode': {'required': True},
1855        'source_server_id': {'required': True},
1856    }
1857
1858    _attribute_map = {
1859        'version': {'key': 'version', 'type': 'str'},
1860        'ssl_enforcement': {'key': 'sslEnforcement', 'type': 'str'},
1861        'minimal_tls_version': {'key': 'minimalTlsVersion', 'type': 'str'},
1862        'public_network_access': {'key': 'publicNetworkAccess', 'type': 'str'},
1863        'storage_profile': {'key': 'storageProfile', 'type': 'StorageProfile'},
1864        'create_mode': {'key': 'createMode', 'type': 'str'},
1865        'source_server_id': {'key': 'sourceServerId', 'type': 'str'},
1866    }
1867
1868    def __init__(
1869        self,
1870        **kwargs
1871    ):
1872        super(ServerPropertiesForGeoRestore, self).__init__(**kwargs)
1873        self.create_mode = 'GeoRestore'  # type: str
1874        self.source_server_id = kwargs['source_server_id']
1875
1876
1877class ServerPropertiesForReplica(ServerPropertiesForCreate):
1878    """The properties to create a new replica.
1879
1880    All required parameters must be populated in order to send to Azure.
1881
1882    :param version: Server version. Possible values include: "10.2", "10.3".
1883    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
1884    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
1885     include: "Enabled", "Disabled".
1886    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
1887    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
1888     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
1889    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
1890    :param public_network_access: Whether or not public network access is allowed for this server.
1891     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
1892     "Enabled", "Disabled".
1893    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
1894    :param storage_profile: Storage profile of a server.
1895    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
1896    :param create_mode: Required. The mode to create a new server.Constant filled by server.
1897     Possible values include: "Default", "PointInTimeRestore", "GeoRestore", "Replica".
1898    :type create_mode: str or ~azure.mgmt.rdbms.mariadb.models.CreateMode
1899    :param source_server_id: Required. The master server id to create replica from.
1900    :type source_server_id: str
1901    """
1902
1903    _validation = {
1904        'create_mode': {'required': True},
1905        'source_server_id': {'required': True},
1906    }
1907
1908    _attribute_map = {
1909        'version': {'key': 'version', 'type': 'str'},
1910        'ssl_enforcement': {'key': 'sslEnforcement', 'type': 'str'},
1911        'minimal_tls_version': {'key': 'minimalTlsVersion', 'type': 'str'},
1912        'public_network_access': {'key': 'publicNetworkAccess', 'type': 'str'},
1913        'storage_profile': {'key': 'storageProfile', 'type': 'StorageProfile'},
1914        'create_mode': {'key': 'createMode', 'type': 'str'},
1915        'source_server_id': {'key': 'sourceServerId', 'type': 'str'},
1916    }
1917
1918    def __init__(
1919        self,
1920        **kwargs
1921    ):
1922        super(ServerPropertiesForReplica, self).__init__(**kwargs)
1923        self.create_mode = 'Replica'  # type: str
1924        self.source_server_id = kwargs['source_server_id']
1925
1926
1927class ServerPropertiesForRestore(ServerPropertiesForCreate):
1928    """The properties used to create a new server by restoring from a backup.
1929
1930    All required parameters must be populated in order to send to Azure.
1931
1932    :param version: Server version. Possible values include: "10.2", "10.3".
1933    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
1934    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
1935     include: "Enabled", "Disabled".
1936    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
1937    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
1938     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
1939    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
1940    :param public_network_access: Whether or not public network access is allowed for this server.
1941     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
1942     "Enabled", "Disabled".
1943    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
1944    :param storage_profile: Storage profile of a server.
1945    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
1946    :param create_mode: Required. The mode to create a new server.Constant filled by server.
1947     Possible values include: "Default", "PointInTimeRestore", "GeoRestore", "Replica".
1948    :type create_mode: str or ~azure.mgmt.rdbms.mariadb.models.CreateMode
1949    :param source_server_id: Required. The source server id to restore from.
1950    :type source_server_id: str
1951    :param restore_point_in_time: Required. Restore point creation time (ISO8601 format),
1952     specifying the time to restore from.
1953    :type restore_point_in_time: ~datetime.datetime
1954    """
1955
1956    _validation = {
1957        'create_mode': {'required': True},
1958        'source_server_id': {'required': True},
1959        'restore_point_in_time': {'required': True},
1960    }
1961
1962    _attribute_map = {
1963        'version': {'key': 'version', 'type': 'str'},
1964        'ssl_enforcement': {'key': 'sslEnforcement', 'type': 'str'},
1965        'minimal_tls_version': {'key': 'minimalTlsVersion', 'type': 'str'},
1966        'public_network_access': {'key': 'publicNetworkAccess', 'type': 'str'},
1967        'storage_profile': {'key': 'storageProfile', 'type': 'StorageProfile'},
1968        'create_mode': {'key': 'createMode', 'type': 'str'},
1969        'source_server_id': {'key': 'sourceServerId', 'type': 'str'},
1970        'restore_point_in_time': {'key': 'restorePointInTime', 'type': 'iso-8601'},
1971    }
1972
1973    def __init__(
1974        self,
1975        **kwargs
1976    ):
1977        super(ServerPropertiesForRestore, self).__init__(**kwargs)
1978        self.create_mode = 'PointInTimeRestore'  # type: str
1979        self.source_server_id = kwargs['source_server_id']
1980        self.restore_point_in_time = kwargs['restore_point_in_time']
1981
1982
1983class ServerSecurityAlertPolicy(ProxyResource):
1984    """A server security alert policy.
1985
1986    Variables are only populated by the server, and will be ignored when sending a request.
1987
1988    :ivar id: Fully qualified resource ID for the resource. Ex -
1989     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
1990    :vartype id: str
1991    :ivar name: The name of the resource.
1992    :vartype name: str
1993    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
1994     "Microsoft.Storage/storageAccounts".
1995    :vartype type: str
1996    :param state: Specifies the state of the policy, whether it is enabled or disabled. Possible
1997     values include: "Enabled", "Disabled".
1998    :type state: str or ~azure.mgmt.rdbms.mariadb.models.ServerSecurityAlertPolicyState
1999    :param disabled_alerts: Specifies an array of alerts that are disabled. Allowed values are:
2000     Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly.
2001    :type disabled_alerts: list[str]
2002    :param email_addresses: Specifies an array of e-mail addresses to which the alert is sent.
2003    :type email_addresses: list[str]
2004    :param email_account_admins: Specifies that the alert is sent to the account administrators.
2005    :type email_account_admins: bool
2006    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
2007     https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection
2008     audit logs.
2009    :type storage_endpoint: str
2010    :param storage_account_access_key: Specifies the identifier key of the Threat Detection audit
2011     storage account.
2012    :type storage_account_access_key: str
2013    :param retention_days: Specifies the number of days to keep in the Threat Detection audit logs.
2014    :type retention_days: int
2015    """
2016
2017    _validation = {
2018        'id': {'readonly': True},
2019        'name': {'readonly': True},
2020        'type': {'readonly': True},
2021    }
2022
2023    _attribute_map = {
2024        'id': {'key': 'id', 'type': 'str'},
2025        'name': {'key': 'name', 'type': 'str'},
2026        'type': {'key': 'type', 'type': 'str'},
2027        'state': {'key': 'properties.state', 'type': 'str'},
2028        'disabled_alerts': {'key': 'properties.disabledAlerts', 'type': '[str]'},
2029        'email_addresses': {'key': 'properties.emailAddresses', 'type': '[str]'},
2030        'email_account_admins': {'key': 'properties.emailAccountAdmins', 'type': 'bool'},
2031        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
2032        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
2033        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
2034    }
2035
2036    def __init__(
2037        self,
2038        **kwargs
2039    ):
2040        super(ServerSecurityAlertPolicy, self).__init__(**kwargs)
2041        self.state = kwargs.get('state', None)
2042        self.disabled_alerts = kwargs.get('disabled_alerts', None)
2043        self.email_addresses = kwargs.get('email_addresses', None)
2044        self.email_account_admins = kwargs.get('email_account_admins', None)
2045        self.storage_endpoint = kwargs.get('storage_endpoint', None)
2046        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
2047        self.retention_days = kwargs.get('retention_days', None)
2048
2049
2050class ServerSecurityAlertPolicyListResult(msrest.serialization.Model):
2051    """A list of the server's security alert policies.
2052
2053    Variables are only populated by the server, and will be ignored when sending a request.
2054
2055    :ivar value: Array of results.
2056    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.ServerSecurityAlertPolicy]
2057    :ivar next_link: Link to retrieve next page of results.
2058    :vartype next_link: str
2059    """
2060
2061    _validation = {
2062        'value': {'readonly': True},
2063        'next_link': {'readonly': True},
2064    }
2065
2066    _attribute_map = {
2067        'value': {'key': 'value', 'type': '[ServerSecurityAlertPolicy]'},
2068        'next_link': {'key': 'nextLink', 'type': 'str'},
2069    }
2070
2071    def __init__(
2072        self,
2073        **kwargs
2074    ):
2075        super(ServerSecurityAlertPolicyListResult, self).__init__(**kwargs)
2076        self.value = None
2077        self.next_link = None
2078
2079
2080class ServerUpdateParameters(msrest.serialization.Model):
2081    """Parameters allowed to update for a server.
2082
2083    :param sku: The SKU (pricing tier) of the server.
2084    :type sku: ~azure.mgmt.rdbms.mariadb.models.Sku
2085    :param tags: A set of tags. Application-specific metadata in the form of key-value pairs.
2086    :type tags: dict[str, str]
2087    :param storage_profile: Storage profile of a server.
2088    :type storage_profile: ~azure.mgmt.rdbms.mariadb.models.StorageProfile
2089    :param administrator_login_password: The password of the administrator login.
2090    :type administrator_login_password: str
2091    :param version: The version of a server. Possible values include: "10.2", "10.3".
2092    :type version: str or ~azure.mgmt.rdbms.mariadb.models.ServerVersion
2093    :param ssl_enforcement: Enable ssl enforcement or not when connect to server. Possible values
2094     include: "Enabled", "Disabled".
2095    :type ssl_enforcement: str or ~azure.mgmt.rdbms.mariadb.models.SslEnforcementEnum
2096    :param minimal_tls_version: Enforce a minimal Tls version for the server. Possible values
2097     include: "TLS1_0", "TLS1_1", "TLS1_2", "TLSEnforcementDisabled".
2098    :type minimal_tls_version: str or ~azure.mgmt.rdbms.mariadb.models.MinimalTlsVersionEnum
2099    :param public_network_access: Whether or not public network access is allowed for this server.
2100     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
2101     "Enabled", "Disabled".
2102    :type public_network_access: str or ~azure.mgmt.rdbms.mariadb.models.PublicNetworkAccessEnum
2103    :param replication_role: The replication role of the server.
2104    :type replication_role: str
2105    """
2106
2107    _attribute_map = {
2108        'sku': {'key': 'sku', 'type': 'Sku'},
2109        'tags': {'key': 'tags', 'type': '{str}'},
2110        'storage_profile': {'key': 'properties.storageProfile', 'type': 'StorageProfile'},
2111        'administrator_login_password': {'key': 'properties.administratorLoginPassword', 'type': 'str'},
2112        'version': {'key': 'properties.version', 'type': 'str'},
2113        'ssl_enforcement': {'key': 'properties.sslEnforcement', 'type': 'str'},
2114        'minimal_tls_version': {'key': 'properties.minimalTlsVersion', 'type': 'str'},
2115        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
2116        'replication_role': {'key': 'properties.replicationRole', 'type': 'str'},
2117    }
2118
2119    def __init__(
2120        self,
2121        **kwargs
2122    ):
2123        super(ServerUpdateParameters, self).__init__(**kwargs)
2124        self.sku = kwargs.get('sku', None)
2125        self.tags = kwargs.get('tags', None)
2126        self.storage_profile = kwargs.get('storage_profile', None)
2127        self.administrator_login_password = kwargs.get('administrator_login_password', None)
2128        self.version = kwargs.get('version', None)
2129        self.ssl_enforcement = kwargs.get('ssl_enforcement', None)
2130        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
2131        self.public_network_access = kwargs.get('public_network_access', None)
2132        self.replication_role = kwargs.get('replication_role', None)
2133
2134
2135class Sku(msrest.serialization.Model):
2136    """Billing information related properties of a server.
2137
2138    All required parameters must be populated in order to send to Azure.
2139
2140    :param name: Required. The name of the sku, typically, tier + family + cores, e.g. B_Gen4_1,
2141     GP_Gen5_8.
2142    :type name: str
2143    :param tier: The tier of the particular SKU, e.g. Basic. Possible values include: "Basic",
2144     "GeneralPurpose", "MemoryOptimized".
2145    :type tier: str or ~azure.mgmt.rdbms.mariadb.models.SkuTier
2146    :param capacity: The scale up/out capacity, representing server's compute units.
2147    :type capacity: int
2148    :param size: The size code, to be interpreted by resource as appropriate.
2149    :type size: str
2150    :param family: The family of hardware.
2151    :type family: str
2152    """
2153
2154    _validation = {
2155        'name': {'required': True},
2156        'capacity': {'minimum': 0},
2157    }
2158
2159    _attribute_map = {
2160        'name': {'key': 'name', 'type': 'str'},
2161        'tier': {'key': 'tier', 'type': 'str'},
2162        'capacity': {'key': 'capacity', 'type': 'int'},
2163        'size': {'key': 'size', 'type': 'str'},
2164        'family': {'key': 'family', 'type': 'str'},
2165    }
2166
2167    def __init__(
2168        self,
2169        **kwargs
2170    ):
2171        super(Sku, self).__init__(**kwargs)
2172        self.name = kwargs['name']
2173        self.tier = kwargs.get('tier', None)
2174        self.capacity = kwargs.get('capacity', None)
2175        self.size = kwargs.get('size', None)
2176        self.family = kwargs.get('family', None)
2177
2178
2179class StorageProfile(msrest.serialization.Model):
2180    """Storage Profile properties of a server.
2181
2182    :param backup_retention_days: Backup retention days for the server.
2183    :type backup_retention_days: int
2184    :param geo_redundant_backup: Enable Geo-redundant or not for server backup. Possible values
2185     include: "Enabled", "Disabled".
2186    :type geo_redundant_backup: str or ~azure.mgmt.rdbms.mariadb.models.GeoRedundantBackup
2187    :param storage_mb: Max storage allowed for a server.
2188    :type storage_mb: int
2189    :param storage_autogrow: Enable Storage Auto Grow. Possible values include: "Enabled",
2190     "Disabled".
2191    :type storage_autogrow: str or ~azure.mgmt.rdbms.mariadb.models.StorageAutogrow
2192    """
2193
2194    _attribute_map = {
2195        'backup_retention_days': {'key': 'backupRetentionDays', 'type': 'int'},
2196        'geo_redundant_backup': {'key': 'geoRedundantBackup', 'type': 'str'},
2197        'storage_mb': {'key': 'storageMB', 'type': 'int'},
2198        'storage_autogrow': {'key': 'storageAutogrow', 'type': 'str'},
2199    }
2200
2201    def __init__(
2202        self,
2203        **kwargs
2204    ):
2205        super(StorageProfile, self).__init__(**kwargs)
2206        self.backup_retention_days = kwargs.get('backup_retention_days', None)
2207        self.geo_redundant_backup = kwargs.get('geo_redundant_backup', None)
2208        self.storage_mb = kwargs.get('storage_mb', None)
2209        self.storage_autogrow = kwargs.get('storage_autogrow', None)
2210
2211
2212class TagsObject(msrest.serialization.Model):
2213    """Tags object for patch operations.
2214
2215    :param tags: A set of tags. Resource tags.
2216    :type tags: dict[str, str]
2217    """
2218
2219    _attribute_map = {
2220        'tags': {'key': 'tags', 'type': '{str}'},
2221    }
2222
2223    def __init__(
2224        self,
2225        **kwargs
2226    ):
2227        super(TagsObject, self).__init__(**kwargs)
2228        self.tags = kwargs.get('tags', None)
2229
2230
2231class TopQueryStatisticsInput(msrest.serialization.Model):
2232    """Input to get top query statistics.
2233
2234    All required parameters must be populated in order to send to Azure.
2235
2236    :param number_of_top_queries: Required. Max number of top queries to return.
2237    :type number_of_top_queries: int
2238    :param aggregation_function: Required. Aggregation function name.
2239    :type aggregation_function: str
2240    :param observed_metric: Required. Observed metric name.
2241    :type observed_metric: str
2242    :param observation_start_time: Required. Observation start time.
2243    :type observation_start_time: ~datetime.datetime
2244    :param observation_end_time: Required. Observation end time.
2245    :type observation_end_time: ~datetime.datetime
2246    :param aggregation_window: Required. Aggregation interval type in ISO 8601 format.
2247    :type aggregation_window: str
2248    """
2249
2250    _validation = {
2251        'number_of_top_queries': {'required': True},
2252        'aggregation_function': {'required': True},
2253        'observed_metric': {'required': True},
2254        'observation_start_time': {'required': True},
2255        'observation_end_time': {'required': True},
2256        'aggregation_window': {'required': True},
2257    }
2258
2259    _attribute_map = {
2260        'number_of_top_queries': {'key': 'properties.numberOfTopQueries', 'type': 'int'},
2261        'aggregation_function': {'key': 'properties.aggregationFunction', 'type': 'str'},
2262        'observed_metric': {'key': 'properties.observedMetric', 'type': 'str'},
2263        'observation_start_time': {'key': 'properties.observationStartTime', 'type': 'iso-8601'},
2264        'observation_end_time': {'key': 'properties.observationEndTime', 'type': 'iso-8601'},
2265        'aggregation_window': {'key': 'properties.aggregationWindow', 'type': 'str'},
2266    }
2267
2268    def __init__(
2269        self,
2270        **kwargs
2271    ):
2272        super(TopQueryStatisticsInput, self).__init__(**kwargs)
2273        self.number_of_top_queries = kwargs['number_of_top_queries']
2274        self.aggregation_function = kwargs['aggregation_function']
2275        self.observed_metric = kwargs['observed_metric']
2276        self.observation_start_time = kwargs['observation_start_time']
2277        self.observation_end_time = kwargs['observation_end_time']
2278        self.aggregation_window = kwargs['aggregation_window']
2279
2280
2281class TopQueryStatisticsResultList(msrest.serialization.Model):
2282    """A list of query statistics.
2283
2284    Variables are only populated by the server, and will be ignored when sending a request.
2285
2286    :ivar value: The list of top query statistics.
2287    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.QueryStatistic]
2288    :ivar next_link: Link to retrieve next page of results.
2289    :vartype next_link: str
2290    """
2291
2292    _validation = {
2293        'value': {'readonly': True},
2294        'next_link': {'readonly': True},
2295    }
2296
2297    _attribute_map = {
2298        'value': {'key': 'value', 'type': '[QueryStatistic]'},
2299        'next_link': {'key': 'nextLink', 'type': 'str'},
2300    }
2301
2302    def __init__(
2303        self,
2304        **kwargs
2305    ):
2306        super(TopQueryStatisticsResultList, self).__init__(**kwargs)
2307        self.value = None
2308        self.next_link = None
2309
2310
2311class VirtualNetworkRule(ProxyResource):
2312    """A virtual network rule.
2313
2314    Variables are only populated by the server, and will be ignored when sending a request.
2315
2316    :ivar id: Fully qualified resource ID for the resource. Ex -
2317     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
2318    :vartype id: str
2319    :ivar name: The name of the resource.
2320    :vartype name: str
2321    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
2322     "Microsoft.Storage/storageAccounts".
2323    :vartype type: str
2324    :param virtual_network_subnet_id: The ARM resource id of the virtual network subnet.
2325    :type virtual_network_subnet_id: str
2326    :param ignore_missing_vnet_service_endpoint: Create firewall rule before the virtual network
2327     has vnet service endpoint enabled.
2328    :type ignore_missing_vnet_service_endpoint: bool
2329    :ivar state: Virtual Network Rule State. Possible values include: "Initializing", "InProgress",
2330     "Ready", "Deleting", "Unknown".
2331    :vartype state: str or ~azure.mgmt.rdbms.mariadb.models.VirtualNetworkRuleState
2332    """
2333
2334    _validation = {
2335        'id': {'readonly': True},
2336        'name': {'readonly': True},
2337        'type': {'readonly': True},
2338        'state': {'readonly': True},
2339    }
2340
2341    _attribute_map = {
2342        'id': {'key': 'id', 'type': 'str'},
2343        'name': {'key': 'name', 'type': 'str'},
2344        'type': {'key': 'type', 'type': 'str'},
2345        'virtual_network_subnet_id': {'key': 'properties.virtualNetworkSubnetId', 'type': 'str'},
2346        'ignore_missing_vnet_service_endpoint': {'key': 'properties.ignoreMissingVnetServiceEndpoint', 'type': 'bool'},
2347        'state': {'key': 'properties.state', 'type': 'str'},
2348    }
2349
2350    def __init__(
2351        self,
2352        **kwargs
2353    ):
2354        super(VirtualNetworkRule, self).__init__(**kwargs)
2355        self.virtual_network_subnet_id = kwargs.get('virtual_network_subnet_id', None)
2356        self.ignore_missing_vnet_service_endpoint = kwargs.get('ignore_missing_vnet_service_endpoint', None)
2357        self.state = None
2358
2359
2360class VirtualNetworkRuleListResult(msrest.serialization.Model):
2361    """A list of virtual network rules.
2362
2363    Variables are only populated by the server, and will be ignored when sending a request.
2364
2365    :ivar value: Array of results.
2366    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.VirtualNetworkRule]
2367    :ivar next_link: Link to retrieve next page of results.
2368    :vartype next_link: str
2369    """
2370
2371    _validation = {
2372        'value': {'readonly': True},
2373        'next_link': {'readonly': True},
2374    }
2375
2376    _attribute_map = {
2377        'value': {'key': 'value', 'type': '[VirtualNetworkRule]'},
2378        'next_link': {'key': 'nextLink', 'type': 'str'},
2379    }
2380
2381    def __init__(
2382        self,
2383        **kwargs
2384    ):
2385        super(VirtualNetworkRuleListResult, self).__init__(**kwargs)
2386        self.value = None
2387        self.next_link = None
2388
2389
2390class WaitStatistic(ProxyResource):
2391    """Represents a Wait Statistic.
2392
2393    Variables are only populated by the server, and will be ignored when sending a request.
2394
2395    :ivar id: Fully qualified resource ID for the resource. Ex -
2396     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
2397    :vartype id: str
2398    :ivar name: The name of the resource.
2399    :vartype name: str
2400    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
2401     "Microsoft.Storage/storageAccounts".
2402    :vartype type: str
2403    :param start_time: Observation start time.
2404    :type start_time: ~datetime.datetime
2405    :param end_time: Observation end time.
2406    :type end_time: ~datetime.datetime
2407    :param event_name: Wait event name.
2408    :type event_name: str
2409    :param event_type_name: Wait event type name.
2410    :type event_type_name: str
2411    :param query_id: Database query identifier.
2412    :type query_id: long
2413    :param database_name: Database Name.
2414    :type database_name: str
2415    :param user_id: Database user identifier.
2416    :type user_id: long
2417    :param count: Wait event count observed in this time interval.
2418    :type count: long
2419    :param total_time_in_ms: Total time of wait in milliseconds in this time interval.
2420    :type total_time_in_ms: float
2421    """
2422
2423    _validation = {
2424        'id': {'readonly': True},
2425        'name': {'readonly': True},
2426        'type': {'readonly': True},
2427    }
2428
2429    _attribute_map = {
2430        'id': {'key': 'id', 'type': 'str'},
2431        'name': {'key': 'name', 'type': 'str'},
2432        'type': {'key': 'type', 'type': 'str'},
2433        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
2434        'end_time': {'key': 'properties.endTime', 'type': 'iso-8601'},
2435        'event_name': {'key': 'properties.eventName', 'type': 'str'},
2436        'event_type_name': {'key': 'properties.eventTypeName', 'type': 'str'},
2437        'query_id': {'key': 'properties.queryId', 'type': 'long'},
2438        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
2439        'user_id': {'key': 'properties.userId', 'type': 'long'},
2440        'count': {'key': 'properties.count', 'type': 'long'},
2441        'total_time_in_ms': {'key': 'properties.totalTimeInMs', 'type': 'float'},
2442    }
2443
2444    def __init__(
2445        self,
2446        **kwargs
2447    ):
2448        super(WaitStatistic, self).__init__(**kwargs)
2449        self.start_time = kwargs.get('start_time', None)
2450        self.end_time = kwargs.get('end_time', None)
2451        self.event_name = kwargs.get('event_name', None)
2452        self.event_type_name = kwargs.get('event_type_name', None)
2453        self.query_id = kwargs.get('query_id', None)
2454        self.database_name = kwargs.get('database_name', None)
2455        self.user_id = kwargs.get('user_id', None)
2456        self.count = kwargs.get('count', None)
2457        self.total_time_in_ms = kwargs.get('total_time_in_ms', None)
2458
2459
2460class WaitStatisticsInput(msrest.serialization.Model):
2461    """Input to get wait statistics.
2462
2463    All required parameters must be populated in order to send to Azure.
2464
2465    :param observation_start_time: Required. Observation start time.
2466    :type observation_start_time: ~datetime.datetime
2467    :param observation_end_time: Required. Observation end time.
2468    :type observation_end_time: ~datetime.datetime
2469    :param aggregation_window: Required. Aggregation interval type in ISO 8601 format.
2470    :type aggregation_window: str
2471    """
2472
2473    _validation = {
2474        'observation_start_time': {'required': True},
2475        'observation_end_time': {'required': True},
2476        'aggregation_window': {'required': True},
2477    }
2478
2479    _attribute_map = {
2480        'observation_start_time': {'key': 'properties.observationStartTime', 'type': 'iso-8601'},
2481        'observation_end_time': {'key': 'properties.observationEndTime', 'type': 'iso-8601'},
2482        'aggregation_window': {'key': 'properties.aggregationWindow', 'type': 'str'},
2483    }
2484
2485    def __init__(
2486        self,
2487        **kwargs
2488    ):
2489        super(WaitStatisticsInput, self).__init__(**kwargs)
2490        self.observation_start_time = kwargs['observation_start_time']
2491        self.observation_end_time = kwargs['observation_end_time']
2492        self.aggregation_window = kwargs['aggregation_window']
2493
2494
2495class WaitStatisticsResultList(msrest.serialization.Model):
2496    """A list of wait statistics.
2497
2498    Variables are only populated by the server, and will be ignored when sending a request.
2499
2500    :ivar value: The list of wait statistics.
2501    :vartype value: list[~azure.mgmt.rdbms.mariadb.models.WaitStatistic]
2502    :ivar next_link: Link to retrieve next page of results.
2503    :vartype next_link: str
2504    """
2505
2506    _validation = {
2507        'value': {'readonly': True},
2508        'next_link': {'readonly': True},
2509    }
2510
2511    _attribute_map = {
2512        'value': {'key': 'value', 'type': '[WaitStatistic]'},
2513        'next_link': {'key': 'nextLink', 'type': 'str'},
2514    }
2515
2516    def __init__(
2517        self,
2518        **kwargs
2519    ):
2520        super(WaitStatisticsResultList, self).__init__(**kwargs)
2521        self.value = None
2522        self.next_link = None
2523