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